From 6f2187270e914f3da018e1bcc4278c0c2c9eb042 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Thu, 5 May 2016 19:00:28 +0200 Subject: 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. --- gdk/x11/gdkdnd-x11.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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; -- cgit v1.2.1