From 38df2715f2be026b1fa4eaaa171a7517181640b1 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Sun, 3 Jul 2011 21:16:28 +0200 Subject: [PATCH] display: Use the grab pointer for delayed window raising --- src/core/display.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/core/display.c b/src/core/display.c index b4dec8b89..6fb1202d1 100644 --- a/src/core/display.c +++ b/src/core/display.c @@ -48,6 +48,7 @@ #include "xprops.h" #include "workspace-private.h" #include "bell.h" +#include "device-pointer.h" #include "device-keyboard.h" #include "device-private.h" #include "input-events.h" @@ -1458,22 +1459,26 @@ window_raise_with_delay_callback (void *data) if (window == NULL) return FALSE; + if (window->cur_grab == NULL) + return FALSE; + /* If we aren't already on top, check whether the pointer is inside * the window and raise the window if so. */ if (meta_stack_get_top (window->screen->stack) != window) { - int x, y, root_x, root_y; - Window root, child; - unsigned int mask; + int root_x, root_y; gboolean same_screen; gboolean point_in_window; + MetaDevicePointer *pointer; meta_error_trap_push (window->display); - same_screen = XQueryPointer (window->display->xdisplay, - window->xwindow, - &root, &child, - &root_x, &root_y, &x, &y, &mask); + pointer = META_DEVICE_POINTER (window->cur_grab->grab_pointer); + same_screen = meta_device_pointer_query_position (pointer, + window->xwindow, + NULL, NULL, + &root_x, &root_y, + NULL, NULL, NULL); meta_error_trap_pop (window->display); point_in_window =