Set current cursor also when changing the cursor of a window that is the

2005-01-09  Tor Lillqvist  <tlillqvist@novell.com>

	* gdk/win32/gdkwindow-win32.c (gdk_window_set_cursor): Set current
	cursor also when changing the cursor of a window that is the first
	ancestor of the window containing the pointer that has a cursor
	defined. (#163035, Ivan Wong)
This commit is contained in:
Tor Lillqvist 2005-01-09 19:26:25 +00:00 committed by Tor Lillqvist
parent b1167d1d11
commit 95ab1e7123
5 changed files with 53 additions and 4 deletions

View File

@ -1,3 +1,10 @@
2005-01-09 Tor Lillqvist <tlillqvist@novell.com>
* gdk/win32/gdkwindow-win32.c (gdk_window_set_cursor): Set current
cursor also when changing the cursor of a window that is the first
ancestor of the window containing the pointer that has a cursor
defined. (#163035, Ivan Wong)
2005-01-09 Anders Carlsson <andersca@gnome.org>
* gtk/gtkcellrenderertext.c: (get_size):

View File

@ -1,3 +1,10 @@
2005-01-09 Tor Lillqvist <tlillqvist@novell.com>
* gdk/win32/gdkwindow-win32.c (gdk_window_set_cursor): Set current
cursor also when changing the cursor of a window that is the first
ancestor of the window containing the pointer that has a cursor
defined. (#163035, Ivan Wong)
2005-01-09 Anders Carlsson <andersca@gnome.org>
* gtk/gtkcellrenderertext.c: (get_size):

View File

@ -1,3 +1,10 @@
2005-01-09 Tor Lillqvist <tlillqvist@novell.com>
* gdk/win32/gdkwindow-win32.c (gdk_window_set_cursor): Set current
cursor also when changing the cursor of a window that is the first
ancestor of the window containing the pointer that has a cursor
defined. (#163035, Ivan Wong)
2005-01-09 Anders Carlsson <andersca@gnome.org>
* gtk/gtkcellrenderertext.c: (get_size):

View File

@ -1,3 +1,10 @@
2005-01-09 Tor Lillqvist <tlillqvist@novell.com>
* gdk/win32/gdkwindow-win32.c (gdk_window_set_cursor): Set current
cursor also when changing the cursor of a window that is the first
ancestor of the window containing the pointer that has a cursor
defined. (#163035, Ivan Wong)
2005-01-09 Anders Carlsson <andersca@gnome.org>
* gtk/gtkcellrenderertext.c: (get_size):

View File

@ -1823,10 +1823,31 @@ gdk_window_set_cursor (GdkWindow *window,
hcursor, impl->hcursor));
}
/* If the pointer is over our window, set new cursor if given */
if (gdk_window_get_pointer(window, NULL, NULL, NULL) == window)
if (impl->hcursor != NULL)
SetCursor (impl->hcursor);
if (impl->hcursor != NULL)
{
/* If the pointer is over our window, set new cursor */
GdkWindow *curr_window = gdk_window_get_pointer (window, NULL, NULL, NULL);
if (curr_window == window)
SetCursor (impl->hcursor);
else
{
/* Climb up the tree and find whether our window is the
* first ancestor that has cursor defined, and if so, set
* new cursor.
*/
GdkWindowObject *curr_window_obj = GDK_WINDOW_OBJECT (curr_window);
while (curr_window_obj &&
!GDK_WINDOW_IMPL_WIN32 (curr_window_obj->impl)->hcursor)
{
curr_window_obj = curr_window_obj->parent;
if (curr_window_obj == GDK_WINDOW_OBJECT (window))
{
SetCursor (impl->hcursor);
break;
}
}
}
}
/* Destroy the previous cursor: Need to make sure it's no longer in
* use before we destroy it, in case we're not over our window but