summaryrefslogtreecommitdiff
path: root/src/core/display.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/display.c')
-rw-r--r--src/core/display.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/core/display.c b/src/core/display.c
index 4ed11b035..59551b5dd 100644
--- a/src/core/display.c
+++ b/src/core/display.c
@@ -69,6 +69,10 @@
#ifdef HAVE_XCURSOR
#include <X11/Xcursor/Xcursor.h>
#endif
+#ifdef HAVE_XINPUT2
+#include <X11/extensions/XInput2.h>
+#include "device-map-xi2.h"
+#endif
#include <X11/extensions/Xrender.h>
#include <X11/extensions/Xcomposite.h>
#include <X11/extensions/Xdamage.h>
@@ -1944,6 +1948,17 @@ event_callback (XEvent *event,
}
#endif /* HAVE_SHAPE */
+#ifdef HAVE_XINPUT2
+ if (display->have_xinput2 &&
+ meta_device_map_xi2_handle_hierarchy_event (META_DEVICE_MAP_XI2 (display->device_map),
+ event))
+ {
+ /* Let GDK Handle the event too for its own device accounting */
+ filter_out_event = FALSE;
+ bypass_compositor = FALSE;
+ }
+ else
+#endif
if (meta_input_event_get_type (display, event, &evtype))
{
Window xwindow = meta_input_event_get_window (display, event);