diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2016-05-05 19:00:28 +0200 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2016-05-05 15:04:02 -0400 |
commit | 6f2187270e914f3da018e1bcc4278c0c2c9eb042 (patch) | |
tree | 93316ec7eaeb6596826cd05932b9c2fbf2fa763b | |
parent | c509a104b72c2682ebde1f79ccecf49747318881 (diff) | |
download | gtk+-6f2187270e914f3da018e1bcc4278c0c2c9eb042.tar.gz |
x11: Rely on passive keyboard grabs with XI2 for DnD
The active keyboard grab can be spared then. This way the passive
key grabs allow other key combinations (eg. alt-tab) that are not
mandatory to grab here.
-rw-r--r-- | gdk/x11/gdkdnd-x11.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/gdk/x11/gdkdnd-x11.c b/gdk/x11/gdkdnd-x11.c index 3d25ea2734..c433b173ab 100644 --- a/gdk/x11/gdkdnd-x11.c +++ b/gdk/x11/gdkdnd-x11.c @@ -2656,6 +2656,7 @@ drag_context_grab (GdkDragContext *context) { GdkX11DragContext *x11_context = GDK_X11_DRAG_CONTEXT (context); GdkDevice *device = gdk_drag_context_get_device (context); + GdkSeatCapabilities capabilities; GdkWindow *root; GdkSeat *seat; gint keycode, i; @@ -2666,8 +2667,15 @@ drag_context_grab (GdkDragContext *context) root = gdk_screen_get_root_window (gdk_window_get_screen (x11_context->ipc_window)); seat = gdk_device_get_seat (gdk_drag_context_get_device (context)); +#ifdef XINPUT_2 + if (GDK_IS_X11_DEVICE_XI2 (device)) + capabilities = GDK_SEAT_CAPABILITY_ALL_POINTING; + else +#endif + capabilities = GDK_SEAT_CAPABILITY_ALL; + if (gdk_seat_grab (seat, x11_context->ipc_window, - GDK_SEAT_CAPABILITY_ALL, FALSE, + capabilities, FALSE, x11_context->cursor, NULL, NULL, NULL) != GDK_GRAB_SUCCESS) return FALSE; |