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
This commit is contained in:
Carlos Garnacho 2011-07-27 00:26:18 +02:00
parent a285b8ae44
commit d05297593f
2 changed files with 9 additions and 6 deletions

View File

@ -2121,9 +2121,9 @@ meta_frames_motion_notify_event (GtkWidget *widget,
case META_GRAB_OP_CLICKING_UNSTICK: case META_GRAB_OP_CLICKING_UNSTICK:
{ {
MetaFrameControl control; MetaFrameControl control;
int x, y; gdouble x, y;
gdk_window_get_pointer (frame->window, &x, &y, NULL); gdk_event_get_coords ((GdkEvent *) event, &x, &y);
/* Control is set to none unless it matches /* Control is set to none unless it matches
* the current grab * the current grab
@ -2162,10 +2162,9 @@ meta_frames_motion_notify_event (GtkWidget *widget,
case META_GRAB_OP_NONE: case META_GRAB_OP_NONE:
{ {
MetaFrameControl control; MetaFrameControl control;
int x, y; gdouble x, y;
gdk_window_get_pointer (frame->window, &x, &y, NULL);
gdk_event_get_coords ((GdkEvent *) event, &x, &y);
control = get_control (frames, frame, x, y); control = get_control (frames, frame, x, y);
/* Update prelit control and cursor */ /* Update prelit control and cursor */

View File

@ -204,6 +204,10 @@ maybe_redirect_mouse_event (XEvent *xevent)
gevent = gdk_event_new (GDK_MOTION_NOTIFY); gevent = gdk_event_new (GDK_MOTION_NOTIFY);
gevent->motion.type = GDK_MOTION_NOTIFY; gevent->motion.type = GDK_MOTION_NOTIFY;
gevent->motion.window = g_object_ref (gdk_window); 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; break;
case EnterNotify: case EnterNotify:
case LeaveNotify: case LeaveNotify: