diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2018-07-26 13:14:17 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2018-07-26 14:26:22 +0200 |
commit | 9febe9efd0babdfb2123b9fc1999c4b59b03fcca (patch) | |
tree | 6d0b7fe327376d68a847b67fcd2abb8c7bb5aa2d | |
parent | 9008f7702dff689ce48f2cfa7ce42db099e4ef0c (diff) | |
download | gtk+-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.c | 7 |
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; |