summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2016-05-05 19:00:28 +0200
committerMatthias Clasen <mclasen@redhat.com>2016-05-05 15:04:02 -0400
commit6f2187270e914f3da018e1bcc4278c0c2c9eb042 (patch)
tree93316ec7eaeb6596826cd05932b9c2fbf2fa763b
parentc509a104b72c2682ebde1f79ccecf49747318881 (diff)
downloadgtk+-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.c10
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;