From 8931b8026e984a3917bed2740281b3f31f823615 Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Tue, 20 Nov 2012 19:27:02 -0500 Subject: [PATCH] compositor: Identify XI2 events as grabbed events https://bugzilla.gnome.org/show_bug.cgi?id=688779 --- src/compositor/compositor.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/compositor/compositor.c b/src/compositor/compositor.c index e3c90e11d..3e251c58d 100644 --- a/src/compositor/compositor.c +++ b/src/compositor/compositor.c @@ -714,9 +714,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->xinput_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: @@ -749,7 +766,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);