[mutter/gnome-3-16] backend-x11: Fix our awful hack for crossing events, too



commit 55fd05ea588a34564128f9f657084c82eae1cb0b
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Wed Jun 24 10:30:10 2015 -0700

    backend-x11: Fix our awful hack for crossing events, too
    
    For enter / leave events, which we use in the UI code, we need to make
    sure that these coordinates are root-relative as well, otherwise the
    cursor when entering frames might be incorrect.

 src/backends/x11/meta-backend-x11.c |   12 +++++++++++-
 1 files changed, 11 insertions(+), 1 deletions(-)
---
diff --git a/src/backends/x11/meta-backend-x11.c b/src/backends/x11/meta-backend-x11.c
index 6e52a5a..29fcb85 100644
--- a/src/backends/x11/meta-backend-x11.c
+++ b/src/backends/x11/meta-backend-x11.c
@@ -133,6 +133,8 @@ static void
 translate_crossing_event (MetaBackendX11 *x11,
                           XIEnterEvent   *enter_event)
 {
+  MetaBackendX11Private *priv = meta_backend_x11_get_instance_private (x11);
+
   /* Throw out weird events generated by grabs. */
   if (enter_event->mode == XINotifyGrab ||
       enter_event->mode == XINotifyUngrab)
@@ -141,7 +143,15 @@ translate_crossing_event (MetaBackendX11 *x11,
       return;
     }
 
-  enter_event->event = meta_backend_x11_get_xwindow (x11);
+  Window stage_window = meta_backend_x11_get_xwindow (x11);
+  if (enter_event->event != stage_window)
+    {
+      /* See above for the rationale for this... */
+      g_assert (priv->mode == META_BACKEND_X11_MODE_COMPOSITOR);
+      enter_event->event = meta_backend_x11_get_xwindow (x11);
+      enter_event->event_x = enter_event->root_x;
+      enter_event->event_y = enter_event->root_y;
+    }
 }
 
 static void



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