[mutter] backend-x11: Fix cursor position under nested
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] backend-x11: Fix cursor position under nested
- Date: Mon, 28 Apr 2014 17:30:08 +0000 (UTC)
commit 9607513e62601fa7c706d72189bee7de0f9a022b
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Mon Apr 28 13:27:02 2014 -0400
backend-x11: Fix cursor position under nested
src/backends/x11/meta-backend-x11.c | 20 +++++++++++++++++---
1 files changed, 17 insertions(+), 3 deletions(-)
---
diff --git a/src/backends/x11/meta-backend-x11.c b/src/backends/x11/meta-backend-x11.c
index 3a7c77a..5ce37c0 100644
--- a/src/backends/x11/meta-backend-x11.c
+++ b/src/backends/x11/meta-backend-x11.c
@@ -82,9 +82,23 @@ static void
translate_device_event (MetaBackendX11 *x11,
XIDeviceEvent *device_event)
{
- device_event->event = get_stage_window (x11);
- device_event->event_x = device_event->root_x;
- device_event->event_y = device_event->root_y;
+ Window stage_window = get_stage_window (x11);
+
+ if (device_event->event != stage_window)
+ {
+ /* This codepath should only ever trigger as an X11 compositor,
+ * and never under nested, as under nested all backend events
+ * should be reported with respect to the stage window. */
+ g_assert (!meta_is_wayland_compositor ());
+
+ device_event->event = stage_window;
+
+ /* As an X11 compositor, the stage window is always at 0,0, so
+ * using root coordinates will give us correct stage coordinates
+ * as well... */
+ device_event->event_x = device_event->root_x;
+ device_event->event_y = device_event->root_y;
+ }
}
/* Clutter makes the assumption that there is only one X window
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]