summaryrefslogtreecommitdiff
path: root/gdk/win32/gdkevents-win32.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdk/win32/gdkevents-win32.c')
-rw-r--r--gdk/win32/gdkevents-win32.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/gdk/win32/gdkevents-win32.c b/gdk/win32/gdkevents-win32.c
index 5059a88993..1115513932 100644
--- a/gdk/win32/gdkevents-win32.c
+++ b/gdk/win32/gdkevents-win32.c
@@ -1,6 +1,7 @@
/* GDK - The GIMP Drawing Kit
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
* Copyright (C) 1998-2002 Tor Lillqvist
+ * Copyright (C) 2007 Cody Russell
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -2816,7 +2817,17 @@ gdk_event_translate (MSG *msg,
event->any.window = window;
append_event (event);
-
+
+ if (event->any.type == GDK_UNMAP)
+ {
+ impl = GDK_WINDOW_IMPL_WIN32 (GDK_WINDOW_OBJECT (window)->impl);
+
+ if (impl->transient_owner && GetForegroundWindow () == GDK_WINDOW_HWND (window))
+ {
+ SetForegroundWindow (GDK_WINDOW_HWND (impl->transient_owner));
+ }
+ }
+
if (event->any.type == GDK_UNMAP &&
p_grab_window == window)
gdk_pointer_ungrab (msg->time);
@@ -3213,6 +3224,13 @@ gdk_event_translate (MSG *msg,
append_event (event);
+ impl = GDK_WINDOW_IMPL_WIN32 (GDK_WINDOW_OBJECT (window)->impl);
+
+ if (impl->transient_owner && GetForegroundWindow() == GDK_WINDOW_HWND (window))
+ {
+ SetForegroundWindow (GDK_WINDOW_HWND (impl->transient_owner));
+ }
+
return_val = TRUE;
break;