[gtk+] Fix DND keyboard control with XI2



commit 2661403f88af24530e57ada1c552311ae1c6fb26
Author: Matthias Clasen <mclasen redhat com>
Date:   Mon Aug 6 22:56:59 2012 -0400

    Fix DND keyboard control with XI2
    
    We are using XI2 to grab the key events, but we did not do the
    necessary extra work to make GDK deliver root window events to us.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=681006

 gtk/gtkdnd.c |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkdnd.c b/gtk/gtkdnd.c
index 27a615e..42f7221 100644
--- a/gtk/gtkdnd.c
+++ b/gtk/gtkdnd.c
@@ -411,6 +411,18 @@ root_key_filter (GdkXEvent *xevent,
   if ((ev->type == KeyPress || ev->type == KeyRelease) &&
       ev->xkey.root == ev->xkey.window)
     ev->xkey.window = (Window)data;
+  else if (ev->type == GenericEvent)
+    {
+      XGenericEventCookie *cookie;
+      XIDeviceEvent *dev;
+
+      cookie = &ev->xcookie;
+      dev = (XIDeviceEvent *) cookie->data;
+
+      if (dev->evtype == XI_KeyPress ||
+          dev->evtype == XI_KeyRelease)
+        dev->event = (Window)data;
+    }
 
   return GDK_FILTER_CONTINUE;
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]