[mutter/wip/multitouchr: 54/73] frames: Get coordinates from event



commit b742d1bc644083acae03ae9c4d6d5d35bdafebe0
Author: Carlos Garnacho <carlosg gnome org>
Date:   Wed Jul 27 00:26:18 2011 +0200

    frames: Get coordinates from event
    
    Don't spare a synchronous X call, instead translate
    properly the XEvent coordinates in ui.c and use
    the event coordinates in MetaFrames

 src/ui/frames.c |   13 +++++--------
 src/ui/ui.c     |    4 ++++
 2 files changed, 9 insertions(+), 8 deletions(-)
---
diff --git a/src/ui/frames.c b/src/ui/frames.c
index 9915c01..a3845ea 100644
--- a/src/ui/frames.c
+++ b/src/ui/frames.c
@@ -1736,10 +1736,9 @@ meta_frames_motion_notify_event     (GtkWidget           *widget,
     case META_GRAB_OP_CLICKING_UNSTICK:
       {
         MetaFrameControl control;
-        int x, y;
-        
-        gdk_window_get_device_position (frame->window, event->device,
-                                        &x, &y, NULL);
+        gdouble x, y;
+
+        gdk_event_get_coords ((GdkEvent *) event, &x, &y);
 
         /* Control is set to none unless it matches
          * the current grab
@@ -1776,11 +1775,9 @@ meta_frames_motion_notify_event     (GtkWidget           *widget,
     case META_GRAB_OP_NONE:
       {
         MetaFrameControl control;
-        int x, y;
-        
-        gdk_window_get_device_position (frame->window, event->device,
-                                        &x, &y, NULL);
+        gdouble x, y;
 
+        gdk_event_get_coords ((GdkEvent *) event, &x, &y);
         control = get_control (frames, frame, x, y);
 
         /* Update prelit control and cursor */
diff --git a/src/ui/ui.c b/src/ui/ui.c
index 87419d9..0fac3b0 100644
--- a/src/ui/ui.c
+++ b/src/ui/ui.c
@@ -210,6 +210,10 @@ maybe_redirect_mouse_event (XEvent *xevent)
       gevent = gdk_event_new (GDK_MOTION_NOTIFY);
       gevent->motion.type = GDK_MOTION_NOTIFY;
       gevent->motion.window = g_object_ref (gdk_window);
+      gevent->motion.x = x;
+      gevent->motion.y = y;
+      gevent->motion.x_root = x_root;
+      gevent->motion.y_root = y_root;
       break;
     case EnterNotify:
     case LeaveNotify:



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