[gtk+] x11/dnd: Ignore grab broken events from other devices than our DnD device.



commit 1d04bdf845c5418748af8f2b34a6fb718536580f
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]