diff options
author | Matthias Clasen <mclasen@redhat.com> | 2019-05-12 19:30:56 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2019-05-12 19:30:56 +0000 |
commit | 40b34c76e6c08c2a340d516fb985838a8ea31940 (patch) | |
tree | aa96fa950973c62aa602d9c7c05cdc829da29e4b | |
parent | 1318d3748afba9ef8c476f05cca0516f885faeb7 (diff) | |
download | gtk+-key-controller-shortcut.tar.gz |
widget: Treat key controllers like gestureskey-controller-shortcut
For the purposes of cutting short event handling,
treat key controllers like gestures. It is fairly
common to have multiple key controllers on a widget,
and the event handling can inadvertently cut short
e.g. by modifier key releases that return TRUE
from handle_event.
Closes: https://gitlab.gnome.org/GNOME/gtk/issues/1884
-rw-r--r-- | gtk/gtkwidget.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index bbc5ada6f6..69de5ce583 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -47,6 +47,7 @@ #include "gtkgestureprivate.h" #include "gtkgesturesingle.h" #include "gtkgestureswipe.h" +#include "gtkeventcontrollerkey.h" #include "gtkintl.h" #include "gtklayoutmanagerprivate.h" #include "gtkmain.h" @@ -5225,7 +5226,9 @@ gtk_widget_run_controllers (GtkWidget *widget, * to collaborate with anything else. Break early if any such event * controller handled the event. */ - if (handled && !GTK_IS_GESTURE (controller)) + if (handled && + !GTK_IS_GESTURE (controller) && + !GTK_IS_EVENT_CONTROLLER_KEY (controller)) break; } |