diff options
Diffstat (limited to 'gtk/gtkshortcutcontroller.c')
-rw-r--r-- | gtk/gtkshortcutcontroller.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/gtk/gtkshortcutcontroller.c b/gtk/gtkshortcutcontroller.c index 5eb0187022..01f718c0f7 100644 --- a/gtk/gtkshortcutcontroller.c +++ b/gtk/gtkshortcutcontroller.c @@ -422,6 +422,18 @@ gtk_shortcut_controller_run_controllers (GtkEventController *controller, return retval; } +static GtkFilterEventStatus +gtk_shortcut_controller_filter_event (GtkEventController *controller, + GdkEvent *event) +{ + GdkEventType event_type = gdk_event_get_event_type (event); + + if (event_type == GDK_KEY_PRESS || event_type == GDK_KEY_RELEASE) + return GTK_EVENT_HANDLE; + + return GTK_EVENT_SKIP; +} + static gboolean gtk_shortcut_controller_handle_event (GtkEventController *controller, GdkEvent *event, @@ -435,9 +447,6 @@ gtk_shortcut_controller_handle_event (GtkEventController *controller, if (self->scope != GTK_SHORTCUT_SCOPE_LOCAL) return FALSE; - if (event_type != GDK_KEY_PRESS && event_type != GDK_KEY_RELEASE) - return FALSE; - if (event_type == GDK_KEY_PRESS) { GdkModifierType modifiers, consumed_modifiers; @@ -558,6 +567,7 @@ gtk_shortcut_controller_class_init (GtkShortcutControllerClass *klass) object_class->set_property = gtk_shortcut_controller_set_property; object_class->get_property = gtk_shortcut_controller_get_property; + controller_class->filter_event = gtk_shortcut_controller_filter_event; controller_class->handle_event = gtk_shortcut_controller_handle_event; controller_class->set_widget = gtk_shortcut_controller_set_widget; controller_class->unset_widget = gtk_shortcut_controller_unset_widget; |