[mutter/wip/xinput2b: 15/22] compositor: Identify XI2 events as grabbed events



commit fc39a5e4a3dc7e02d1e8308491291ac4ee025067
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Tue Nov 20 19:27:02 2012 -0500

    compositor: Identify XI2 events as grabbed events

 src/compositor/compositor.c |   23 ++++++++++++++++++++---
 1 files changed, 20 insertions(+), 3 deletions(-)
---
diff --git a/src/compositor/compositor.c b/src/compositor/compositor.c
index dd68561..db57d37 100644
--- a/src/compositor/compositor.c
+++ b/src/compositor/compositor.c
@@ -724,9 +724,26 @@ meta_compositor_set_updates (MetaCompositor *compositor,
 }
 
 static gboolean
-is_grabbed_event (XEvent *event)
+is_grabbed_event (MetaDisplay *display,
+                  XEvent      *event)
 {
-  switch (event->xany.type)
+  if (event->type == GenericEvent &&
+      event->xcookie.extension == display->xinput2_opcode)
+    {
+      XIEvent *xev = (XIEvent *) event->xcookie.data;
+
+      switch (xev->evtype)
+        {
+        case XI_Motion:
+        case XI_ButtonPress:
+        case XI_ButtonRelease:
+        case XI_KeyPress:
+        case XI_KeyRelease:
+          return TRUE;
+        }
+    }
+
+  switch (event->type)
     {
     case ButtonPress:
     case ButtonRelease:
@@ -759,7 +776,7 @@ meta_compositor_process_event (MetaCompositor *compositor,
                                XEvent         *event,
                                MetaWindow     *window)
 {
-  if (compositor->modal_plugin && is_grabbed_event (event))
+  if (compositor->modal_plugin && is_grabbed_event (compositor->display, event))
     {
       MetaPluginClass *klass = META_PLUGIN_GET_CLASS (compositor->modal_plugin);
 



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