summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2011-08-02 19:19:00 +0200
committerJasper St. Pierre <jstpierre@mecheye.net>2012-11-03 19:59:13 -0400
commit6a03efe4355a2338f76e77bf9c0f51ffcbf8331b (patch)
tree9eb958e9d3b87a35d1fc2ccfbc3e6a2ac4cbf9ce
parent85c1058c94057b97e40409aed61ded1ec7fc6391 (diff)
downloadmutter-6a03efe4355a2338f76e77bf9c0f51ffcbf8331b.tar.gz
input-events: Add meta_input_event_ignored()
This function tells whether an input event should be ignored, the only current reason being the duplication of touch events and their emulated XI2 pointer event counterparts.
-rw-r--r--src/core/input-events.c28
-rw-r--r--src/core/input-events.h3
2 files changed, 31 insertions, 0 deletions
diff --git a/src/core/input-events.c b/src/core/input-events.c
index 7ac7a7616..5ef5d9c3c 100644
--- a/src/core/input-events.c
+++ b/src/core/input-events.c
@@ -146,6 +146,34 @@ meta_input_event_is_type (MetaDisplay *display,
return (type == ev_type);
}
+gboolean
+meta_input_event_ignore (MetaDisplay *display,
+ XEvent *ev)
+{
+ if (ev->type == GenericEvent &&
+ ev->xcookie.extension == display->xinput2_opcode)
+ {
+ XIEvent *xev;
+
+ g_assert (display->have_xinput2 == TRUE);
+ xev = (XIEvent *) ev->xcookie.data;
+
+ switch (xev->evtype)
+ {
+ case XI_Motion:
+ case XI_ButtonPress:
+ case XI_ButtonRelease:
+ if (((XIDeviceEvent *) xev)->flags & XIPointerEmulated)
+ return TRUE;
+
+ default:
+ return FALSE;
+ }
+ }
+
+ return FALSE;
+}
+
Window
meta_input_event_get_window (MetaDisplay *display,
XEvent *ev)
diff --git a/src/core/input-events.h b/src/core/input-events.h
index 356cd16f6..d0e5af0b3 100644
--- a/src/core/input-events.h
+++ b/src/core/input-events.h
@@ -42,6 +42,9 @@ gboolean meta_input_event_is_type (MetaDisplay *display,
XEvent *ev,
guint ev_type);
+gboolean meta_input_event_ignore (MetaDisplay *display,
+ XEvent *ev);
+
Window meta_input_event_get_window (MetaDisplay *display,
XEvent *ev);
Window meta_input_event_get_root_window (MetaDisplay *display,