[gtk+/xi2] gdk_device_grab(): Force listen on motion/button/crossing events.



commit 1210cd961a9d6189dc872f91cf128400f64e2621
Author: Carlos Garnacho <carlos gnome org>
Date:   Mon Dec 21 21:55:38 2009 +0100

    gdk_device_grab(): Force listen on motion/button/crossing events.
    
    This code is taken from gdk_pointer_grab(), the additional events
    in the modified mask are needed for internal GDK bookkeeping
    (setting toplevel_under_pointer correctly and such).

 gdk/gdkdevice.c |   19 ++++++++++++++++++-
 1 files changed, 18 insertions(+), 1 deletions(-)
---
diff --git a/gdk/gdkdevice.c b/gdk/gdkdevice.c
index 97a5197..87cb795 100644
--- a/gdk/gdkdevice.c
+++ b/gdk/gdkdevice.c
@@ -654,6 +654,23 @@ gdk_device_get_axis (GdkDevice  *device,
   return FALSE;
 }
 
+static GdkEventMask
+get_native_grab_event_mask (GdkEventMask grab_mask)
+{
+  /* Similar to the above but for pointer events only */
+  return
+    GDK_POINTER_MOTION_MASK |
+    GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK |
+    GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK |
+    GDK_SCROLL_MASK |
+    (grab_mask &
+     ~(GDK_POINTER_MOTION_HINT_MASK |
+       GDK_BUTTON_MOTION_MASK |
+       GDK_BUTTON1_MOTION_MASK |
+       GDK_BUTTON2_MOTION_MASK |
+       GDK_BUTTON3_MOTION_MASK));
+}
+
 /**
  * gdk_device_grab:
  * @device: a #GdkDevice
@@ -733,7 +750,7 @@ gdk_device_grab (GdkDevice        *device,
                                     window,
                                     native,
                                     owner_events,
-                                    event_mask,
+                                    get_native_grab_event_mask (event_mask),
                                     NULL,
                                     cursor,
                                     time_);



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