summaryrefslogtreecommitdiff
path: root/gtk/gtkshortcutcontroller.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/gtkshortcutcontroller.c')
-rw-r--r--gtk/gtkshortcutcontroller.c16
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;