diff options
Diffstat (limited to 'gdk/win32/gdkevents-win32.c')
-rw-r--r-- | gdk/win32/gdkevents-win32.c | 20 |
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; |