]> Pileus Git - ~andy/gtk/commitdiff
Only set cursors on toplevel.
authorAlexander Larsson <alexl@redhat.com>
Mon, 26 Jan 2009 11:54:02 +0000 (12:54 +0100)
committerAlexander Larsson <alex@localhost.localdomain>
Thu, 2 Apr 2009 08:15:26 +0000 (10:15 +0200)
This fixes a problem where we used to set them on a native window, but we
never unset it becase when the pointer moved to another native window
we just set the cursor on that window. Always setting on the toplevel
fixes this.

gdk/gdkwindow.c

index 69fd9b83f08baac28426d94bfaf82b93d6dcc641..824d5f74472b91f54712c592c087fe84b4a6e987 100644 (file)
@@ -6575,8 +6575,10 @@ update_cursor (GdkDisplay *display)
   if (display->pointer_grab.window != NULL &&
       !is_parent_of (display->pointer_grab.window, (GdkWindow *)cursor_window))
     cursor_window = (GdkWindowObject *)display->pointer_grab.window;
-  
-  GDK_WINDOW_IMPL_GET_IFACE (pointer_window->impl)->set_cursor ((GdkWindow *)pointer_window,
+
+  /* Set all cursors on toplevel, otherwise its tricky to keep track of
+   * which native window has what cursor set. */
+  GDK_WINDOW_IMPL_GET_IFACE (pointer_window->impl)->set_cursor (gdk_window_get_toplevel ((GdkWindow *)pointer_window),
                                                                cursor_window->cursor);
 }