[gtk+/gtk-3-20] x11/dnd: Ignore grab broken events from other devices than our DnD device.
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/gtk-3-20] x11/dnd: Ignore grab broken events from other devices than our DnD device.
- Date: Wed, 18 May 2016 11:11:35 +0000 (UTC)
commit aec4dbfa9445e94fba7250540f1aece223cd64c5
Author: Carlos Garnacho <carlosg gnome org>
Date: Tue May 17 19:27:00 2016 +0200
x11/dnd: Ignore grab broken events from other devices than our DnD device.
The GdkDragContext should only listen to GDK_GRAB_BROKEN events sent to
its own pointer device. It turns out that the passive key grabs mistake
GDK into sending a GdkEventGrabBroken on the master keyboard, which the
DnD machinery mistakes as a signal to cancel the operation.
https://bugzilla.gnome.org/show_bug.cgi?id=766442
gdk/x11/gdkdnd-x11.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
---
diff --git a/gdk/x11/gdkdnd-x11.c b/gdk/x11/gdkdnd-x11.c
index c433b17..4399818 100644
--- a/gdk/x11/gdkdnd-x11.c
+++ b/gdk/x11/gdkdnd-x11.c
@@ -3042,6 +3042,10 @@ gdk_dnd_handle_grab_broken_event (GdkDragContext *context,
event->grab_window == x11_context->ipc_window)
return FALSE;
+ if (gdk_event_get_device ((GdkEvent *) event) !=
+ gdk_drag_context_get_device (context))
+ return FALSE;
+
gdk_drag_context_cancel (context, GDK_DRAG_CANCEL_ERROR);
return TRUE;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]