summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2019-05-12 19:30:56 +0000
committerMatthias Clasen <mclasen@redhat.com>2019-05-12 19:30:56 +0000
commit40b34c76e6c08c2a340d516fb985838a8ea31940 (patch)
treeaa96fa950973c62aa602d9c7c05cdc829da29e4b
parent1318d3748afba9ef8c476f05cca0516f885faeb7 (diff)
downloadgtk+-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.c5
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;
}