diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | ChangeLog.pre-2-10 | 7 | ||||
-rw-r--r-- | ChangeLog.pre-2-6 | 7 | ||||
-rw-r--r-- | ChangeLog.pre-2-8 | 7 | ||||
-rw-r--r-- | gdk/win32/gdkwindow-win32.c | 29 |
5 files changed, 53 insertions, 4 deletions
@@ -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): diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 28e6eac39a..d0dd954630 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -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): diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 28e6eac39a..d0dd954630 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -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): diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 28e6eac39a..d0dd954630 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -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): diff --git a/gdk/win32/gdkwindow-win32.c b/gdk/win32/gdkwindow-win32.c index 99a2e02bed..bb7502ac72 100644 --- a/gdk/win32/gdkwindow-win32.c +++ b/gdk/win32/gdkwindow-win32.c @@ -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 |