summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2018-01-24 00:02:58 +0100
committerMatthias Clasen <mclasen@redhat.com>2018-01-24 12:04:27 +0100
commit063592f3500083d61b9298a303dd34bdcac3de10 (patch)
treebc05e711531d61c0d3c21da8f327d1464c22087c
parent6806c28b1e7806ece2c41a8b4e403c1abfcc2b1b (diff)
downloadgtk+-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.c37
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;