summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Lillqvist <tml@novell.com>2008-10-17 22:13:22 +0000
committerTor Lillqvist <tml@src.gnome.org>2008-10-17 22:13:22 +0000
commit28fb940e102f3ae1bbbfe2fca3d6d1f3acd48863 (patch)
treee84cb784b6810fd457055f13f7b4a42e7070b92e
parent8d20b0e3e11547a443ac95dd5a765a4416981aae (diff)
downloadgdk-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--ChangeLog13
-rw-r--r--gdk/win32/gdkevents-win32.c27
2 files changed, 29 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog
index b79e60933..e6e220cde 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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