diff options
author | Matthias Clasen <mclasen@redhat.com> | 2018-02-07 19:42:47 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2018-02-07 19:42:47 -0500 |
commit | 932a5126ad3ac2c768b8122a755e85766c6cd237 (patch) | |
tree | 32c198f5384058db17885af6e5cc3e125fb16550 | |
parent | ec76862d0095dc4b8de1bc46ee55f01a884e55ef (diff) | |
download | gtk+-932a5126ad3ac2c768b8122a755e85766c6cd237.tar.gz |
Shortcuts window: stop using ::key-press-event
Use a key event controller instead.
-rw-r--r-- | gtk/gtkshortcutswindow.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/gtk/gtkshortcutswindow.c b/gtk/gtkshortcutswindow.c index 6499c041b9..10b7e774a0 100644 --- a/gtk/gtkshortcutswindow.c +++ b/gtk/gtkshortcutswindow.c @@ -26,6 +26,7 @@ #include "gtksearchbar.h" #include "gtksearchentry.h" #include "gtkwidgetprivate.h" +#include "gtkeventcontrollerkey.h" #include "gtkprivate.h" #include "gtkintl.h" @@ -98,6 +99,7 @@ typedef struct GtkListBox *list_box; GtkBox *search_gestures; GtkBox *search_shortcuts; + GtkEventController *controller; GtkWindow *window; gulong keys_changed_id; @@ -633,6 +635,7 @@ gtk_shortcuts_window_finalize (GObject *object) g_clear_object (&priv->search_image_group); g_clear_object (&priv->search_text_group); + g_clear_object (&priv->controller); G_OBJECT_CLASS (gtk_shortcuts_window_parent_class)->finalize (object); } @@ -839,14 +842,16 @@ gtk_shortcuts_window_class_init (GtkShortcutsWindowClass *klass) } static gboolean -window_key_press_event_cb (GtkWidget *window, - GdkEvent *event, - gpointer data) +window_key_pressed (GtkEventController *controller, + guint keyval, + guint keycode, + GdkModifierType state, + gpointer data) { - GtkShortcutsWindow *self = GTK_SHORTCUTS_WINDOW (window); + GtkShortcutsWindow *self = GTK_SHORTCUTS_WINDOW (gtk_event_controller_get_widget (controller)); GtkShortcutsWindowPrivate *priv = gtk_shortcuts_window_get_instance_private (self); - return gtk_search_bar_handle_event (priv->search_bar, event); + return gtk_search_bar_handle_event (priv->search_bar, gtk_get_current_event ()); } static void @@ -865,8 +870,9 @@ gtk_shortcuts_window_init (GtkShortcutsWindow *self) gtk_window_set_resizable (GTK_WINDOW (self), FALSE); gtk_window_set_type_hint (GTK_WINDOW (self), GDK_WINDOW_TYPE_HINT_DIALOG); - g_signal_connect (self, "key-press-event", - G_CALLBACK (window_key_press_event_cb), NULL); + priv->controller = gtk_event_controller_key_new (GTK_WIDGET (self)); + g_signal_connect (priv->controller, "key-pressed", + G_CALLBACK (window_key_pressed), NULL); priv->keywords = g_hash_table_new_full (NULL, NULL, NULL, g_free); priv->search_items_hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); |