From 48fc0f36c28fb0317a3433bafbe7bf8ae8a01171 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Mon, 7 Dec 2009 09:58:34 +0100 Subject: [PATCH] Fix mouse pointer handling on multiple screens The fix in 786b589d95077b465dcc2311ff2489ee7bb9a49f for the "Cannot click buttons more than once without moving the mouse cursor" did not correctly handle setups with multiple screens in one display. We need to handle the case where the first XQueryPointer returns a different root window than the default one. This fixes bug 597386 (agaion) --- gdk/x11/gdkwindow-x11.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c index 6e79ff8644..9c46716444 100644 --- a/gdk/x11/gdkwindow-x11.c +++ b/gdk/x11/gdkwindow-x11.c @@ -3256,7 +3256,7 @@ _gdk_windowing_window_at_pointer (GdkDisplay *display, xwindow_last = xwindow; XQueryPointer (xdisplay, xwindow, &root, &xwindow, &rootx, &rooty, &winx, &winy, &xmask); - if (get_toplevel && + if (get_toplevel && xwindow_last != root && (window = gdk_window_lookup_for_display (display, xwindow_last)) != NULL && GDK_WINDOW_TYPE (window) != GDK_WINDOW_FOREIGN) { @@ -3326,7 +3326,7 @@ _gdk_windowing_window_at_pointer (GdkDisplay *display, gdk_flush (); if (gdk_error_trap_pop ()) break; - if (get_toplevel && + if (get_toplevel && xwindow_last != root && (window = gdk_window_lookup_for_display (display, xwindow_last)) != NULL && GDK_WINDOW_TYPE (window) != GDK_WINDOW_FOREIGN) break;