summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2018-06-26 15:44:13 +0200
committerCarlos Garnacho <carlosg@gnome.org>2018-06-26 15:44:13 +0200
commitbd5324834e999d66dc655251c2b12be76494d62c (patch)
treeb953a60e8a812ed788c6cf17259f4ee9a335a6a4
parentee5aa6c654ad18bd3f23073871a13fa4ba7cc3d5 (diff)
downloadgtk+-bd5324834e999d66dc655251c2b12be76494d62c.tar.gz
gtkcombobox: Use keycontroller on GtkCellEditable implementation
-rw-r--r--gtk/gtkcombobox.c33
1 files changed, 13 insertions, 20 deletions
diff --git a/gtk/gtkcombobox.c b/gtk/gtkcombobox.c
index caf4042640..792d2ebb28 100644
--- a/gtk/gtkcombobox.c
+++ b/gtk/gtkcombobox.c
@@ -2734,19 +2734,12 @@ gtk_combo_box_dispose (GObject* object)
}
static gboolean
-gtk_cell_editable_event (GtkWidget *widget,
- GdkEvent *event,
- gpointer data)
+gtk_cell_editable_key_pressed (GtkEventControllerKey *key,
+ guint keyval,
+ guint keycode,
+ GdkModifierType modifiers,
+ GtkComboBox *combo_box)
{
- GtkComboBox *combo_box = GTK_COMBO_BOX (data);
- guint keyval;
-
- if (gdk_event_get_event_type (event) != GDK_KEY_PRESS)
- return GDK_EVENT_PROPAGATE;
-
- if (!gdk_event_get_keyval (event, &keyval))
- return GDK_EVENT_PROPAGATE;
-
if (keyval == GDK_KEY_Escape)
{
g_object_set (combo_box,
@@ -2776,25 +2769,25 @@ gtk_combo_box_start_editing (GtkCellEditable *cell_editable,
{
GtkComboBox *combo_box = GTK_COMBO_BOX (cell_editable);
GtkComboBoxPrivate *priv = gtk_combo_box_get_instance_private (combo_box);
+ GtkEventController *controller;
GtkWidget *child;
priv->is_cell_renderer = TRUE;
+ controller = gtk_event_controller_key_new ();
+ g_signal_connect_object (controller, "key-pressed",
+ G_CALLBACK (gtk_cell_editable_key_pressed),
+ cell_editable, 0);
+
if (priv->cell_view)
{
- g_signal_connect_object (priv->button, "event",
- G_CALLBACK (gtk_cell_editable_event),
- cell_editable, 0);
-
+ gtk_widget_add_controller (priv->button, controller);
gtk_widget_grab_focus (priv->button);
}
else
{
child = gtk_bin_get_child (GTK_BIN (combo_box));
-
- g_signal_connect_object (child, "event",
- G_CALLBACK (gtk_cell_editable_event),
- cell_editable, 0);
+ gtk_widget_add_controller (child, controller);
gtk_widget_grab_focus (child);
gtk_widget_set_can_focus (priv->button, FALSE);