diff options
author | Matthias Clasen <mclasen@redhat.com> | 2018-01-24 00:02:58 +0100 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2018-01-24 12:04:27 +0100 |
commit | 063592f3500083d61b9298a303dd34bdcac3de10 (patch) | |
tree | bc05e711531d61c0d3c21da8f327d1464c22087c | |
parent | 6806c28b1e7806ece2c41a8b4e403c1abfcc2b1b (diff) | |
download | gtk+-063592f3500083d61b9298a303dd34bdcac3de10.tar.gz |
entry completion: Stop using key-press/release-event
We can use the existing ::event handler for this.
-rw-r--r-- | gtk/gtkentrycompletion.c | 37 |
1 files changed, 12 insertions, 25 deletions
diff --git a/gtk/gtkentrycompletion.c b/gtk/gtkentrycompletion.c index c80f8b0061..7dcd7e54bd 100644 --- a/gtk/gtkentrycompletion.c +++ b/gtk/gtkentrycompletion.c @@ -139,9 +139,6 @@ static void gtk_entry_completion_dispose (GObject *object); static gboolean gtk_entry_completion_visible_func (GtkTreeModel *model, GtkTreeIter *iter, gpointer data); -static gboolean gtk_entry_completion_popup_key_event (GtkWidget *widget, - GdkEventKey *event, - gpointer user_data); static gboolean gtk_entry_completion_popup_event (GtkWidget *widget, GdkEvent *event, gpointer user_data); @@ -597,12 +594,6 @@ gtk_entry_completion_constructed (GObject *object) gtk_window_set_type_hint (GTK_WINDOW(priv->popup_window), GDK_WINDOW_TYPE_HINT_COMBO); - g_signal_connect (priv->popup_window, "key-press-event", - G_CALLBACK (gtk_entry_completion_popup_key_event), - completion); - g_signal_connect (priv->popup_window, "key-release-event", - G_CALLBACK (gtk_entry_completion_popup_key_event), - completion); g_signal_connect (priv->popup_window, "event", G_CALLBACK (gtk_entry_completion_popup_event), completion); @@ -898,28 +889,24 @@ gtk_entry_completion_visible_func (GtkTreeModel *model, } static gboolean -gtk_entry_completion_popup_key_event (GtkWidget *widget, - GdkEventKey *event, - gpointer user_data) -{ - GtkEntryCompletion *completion = GTK_ENTRY_COMPLETION (user_data); - - if (!gtk_widget_get_mapped (completion->priv->popup_window)) - return FALSE; - - /* propagate event to the entry */ - gtk_widget_event (completion->priv->entry, (GdkEvent *)event); - - return TRUE; -} - -static gboolean gtk_entry_completion_popup_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { GtkEntryCompletion *completion = GTK_ENTRY_COMPLETION (user_data); + if (gdk_event_get_event_type (event) == GDK_KEY_PRESS || + gdk_event_get_event_type (event) == GDK_KEY_RELEASE) + { + if (!gtk_widget_get_mapped (completion->priv->popup_window)) + return GDK_EVENT_PROPAGATE; + + /* propagate event to the entry */ + gtk_widget_event (completion->priv->entry, (GdkEvent *)event); + + return GDK_EVENT_STOP; + } + if (gdk_event_get_event_type (event) != GDK_BUTTON_PRESS) return GDK_EVENT_PROPAGATE; |