summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2018-07-26 13:14:17 +0200
committerCarlos Garnacho <carlosg@gnome.org>2018-07-26 14:26:22 +0200
commit9febe9efd0babdfb2123b9fc1999c4b59b03fcca (patch)
tree6d0b7fe327376d68a847b67fcd2abb8c7bb5aa2d
parent9008f7702dff689ce48f2cfa7ce42db099e4ef0c (diff)
downloadgtk+-wip/carlosg/avoid-wm-menu-on-grabs.tar.gz
gtkwindow: Bypass WM menu handling if there's a GTK+ grab presentwip/carlosg/avoid-wm-menu-on-grabs
That means events wouldn't be emitted to this window, but to the grabbing widget (eg. a popover). It is not expected to raise the WM menu in that case.
-rw-r--r--gtk/gtkwindow.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index 0d19a0a06c..c9e4bdc996 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -1432,7 +1432,7 @@ multipress_gesture_pressed_cb (GtkGestureMultiPress *gesture,
gdouble y,
GtkWindow *window)
{
- GtkWidget *event_widget, *widget;
+ GtkWidget *event_widget, *widget, *grab_widget;
GdkEventSequence *sequence;
GtkWindowRegion region;
GtkWindowPrivate *priv;
@@ -1454,8 +1454,11 @@ multipress_gesture_pressed_cb (GtkGestureMultiPress *gesture,
region = get_active_region_type (window, (GdkEventAny*) event, x, y);
+ grab_widget = gtk_window_group_get_current_grab (gtk_window_get_group (window));
+
if (gdk_display_device_is_grabbed (gtk_widget_get_display (widget),
- gtk_gesture_get_device (GTK_GESTURE (gesture))))
+ gtk_gesture_get_device (GTK_GESTURE (gesture))) ||
+ (grab_widget && grab_widget != widget))
{
gtk_gesture_set_state (priv->drag_gesture, GTK_EVENT_SEQUENCE_DENIED);
return;