diff options
author | Tor Lillqvist <tml@novell.com> | 2008-10-17 22:13:22 +0000 |
---|---|---|
committer | Tor Lillqvist <tml@src.gnome.org> | 2008-10-17 22:13:22 +0000 |
commit | 28fb940e102f3ae1bbbfe2fca3d6d1f3acd48863 (patch) | |
tree | e84cb784b6810fd457055f13f7b4a42e7070b92e | |
parent | 8d20b0e3e11547a443ac95dd5a765a4416981aae (diff) | |
download | gdk-pixbuf-28fb940e102f3ae1bbbfe2fca3d6d1f3acd48863.tar.gz |
Bug 556578 - GIMP windows stay on top of other windows
2008-10-18 Tor Lillqvist <tml@novell.com>
Bug 556578 - GIMP windows stay on top of other windows
* gdk/win32/gdkevents-win32.c (ensure_stacking_on_unminimize)
(ensure_stacking_on_window_pos_changing)
(ensure_stacking_on_activate_app): Ignore unmapped windows in the
loops where we look for the lowest "transient-type" window.
(gdk_event_translate): Don't call
ensure_stacking_on_window_pos_changing() or
ensure_stacking_on_activate_app() for unmapped windows.
svn path=/branches/gtk-2-14/; revision=21674
-rw-r--r-- | ChangeLog | 13 | ||||
-rw-r--r-- | gdk/win32/gdkevents-win32.c | 27 |
2 files changed, 29 insertions, 11 deletions
@@ -1,3 +1,16 @@ +2008-10-18 Tor Lillqvist <tml@novell.com> + + Bug 556578 - GIMP windows stay on top of other windows + + * gdk/win32/gdkevents-win32.c (ensure_stacking_on_unminimize) + (ensure_stacking_on_window_pos_changing) + (ensure_stacking_on_activate_app): Ignore unmapped windows in the + loops where we look for the lowest "transient-type" window. + + (gdk_event_translate): Don't call + ensure_stacking_on_window_pos_changing() or + ensure_stacking_on_activate_app() for unmapped windows. + 2008-10-17 Matthias Clasen <mclasen@redhat.com> * configure.in: Bump version diff --git a/gdk/win32/gdkevents-win32.c b/gdk/win32/gdkevents-win32.c index de104d3f0..4cf45ff62 100644 --- a/gdk/win32/gdkevents-win32.c +++ b/gdk/win32/gdkevents-win32.c @@ -2116,9 +2116,10 @@ ensure_stacking_on_unminimize (MSG *msg) GdkWindowImplWin32 *rover_impl = (GdkWindowImplWin32 *)((GdkWindowObject *)rover_gdkw)->impl; - if (rover_impl->type_hint == GDK_WINDOW_TYPE_HINT_UTILITY || - rover_impl->type_hint == GDK_WINDOW_TYPE_HINT_DIALOG || - rover_impl->transient_owner != NULL) + if (GDK_WINDOW_IS_MAPPED (rover_gdkw) && + (rover_impl->type_hint == GDK_WINDOW_TYPE_HINT_UTILITY || + rover_impl->type_hint == GDK_WINDOW_TYPE_HINT_DIALOG || + rover_impl->transient_owner != NULL)) { lowest_transient = rover; } @@ -2166,9 +2167,10 @@ ensure_stacking_on_window_pos_changing (MSG *msg, GdkWindowImplWin32 *rover_impl = (GdkWindowImplWin32 *)((GdkWindowObject *)rover_gdkw)->impl; - if (rover_impl->type_hint == GDK_WINDOW_TYPE_HINT_UTILITY || - rover_impl->type_hint == GDK_WINDOW_TYPE_HINT_DIALOG || - rover_impl->transient_owner != NULL) + if (GDK_WINDOW_IS_MAPPED (rover_gdkw) && + (rover_impl->type_hint == GDK_WINDOW_TYPE_HINT_UTILITY || + rover_impl->type_hint == GDK_WINDOW_TYPE_HINT_DIALOG || + rover_impl->transient_owner != NULL)) { restacking = TRUE; windowpos->hwndInsertAfter = rover; @@ -2222,9 +2224,10 @@ ensure_stacking_on_activate_app (MSG *msg, GdkWindowImplWin32 *rover_impl = (GdkWindowImplWin32 *)((GdkWindowObject *)rover_gdkw)->impl; - if (rover_impl->type_hint == GDK_WINDOW_TYPE_HINT_UTILITY || - rover_impl->type_hint == GDK_WINDOW_TYPE_HINT_DIALOG || - rover_impl->transient_owner != NULL) + if (GDK_WINDOW_IS_MAPPED (rover_gdkw) && + (rover_impl->type_hint == GDK_WINDOW_TYPE_HINT_UTILITY || + rover_impl->type_hint == GDK_WINDOW_TYPE_HINT_DIALOG || + rover_impl->transient_owner != NULL)) { GDK_NOTE (EVENTS, g_print (" restacking: %p", rover)); SetWindowPos (msg->hwnd, rover, 0, 0, 0, 0, @@ -3175,7 +3178,8 @@ gdk_event_translate (MSG *msg, windowpos->cx, windowpos->cy, windowpos->x, windowpos->y, GetNextWindow (msg->hwnd, GW_HWNDPREV))); - return_val = ensure_stacking_on_window_pos_changing (msg, window); + if (GDK_WINDOW_IS_MAPPED (window)) + return_val = ensure_stacking_on_window_pos_changing (msg, window); break; case WM_WINDOWPOSCHANGED: @@ -3656,7 +3660,8 @@ gdk_event_translate (MSG *msg, msg->wParam ? "YES" : "NO", (gint64) msg->lParam)); - ensure_stacking_on_activate_app (msg, window); + if (GDK_WINDOW_IS_MAPPED (window)) + ensure_stacking_on_activate_app (msg, window); break; /* Handle WINTAB events here, as we know that gdkinput.c will |