diff --git a/gdk/win32/gdkevents-win32.c b/gdk/win32/gdkevents-win32.c index 24c300f932..8652f8c5f3 100644 --- a/gdk/win32/gdkevents-win32.c +++ b/gdk/win32/gdkevents-win32.c @@ -2901,7 +2901,10 @@ gdk_event_translate (MSG *msg, if (impl->transient_owner && GetForegroundWindow () == GDK_SURFACE_HWND (window)) - SetForegroundWindow (GDK_SURFACE_HWND (impl->transient_owner)); + { + SetForegroundWindow (GDK_SURFACE_HWND (impl->transient_owner)); + SetCapture (GDK_SURFACE_HWND (impl->transient_owner)); + } } if (!(windowpos->flags & SWP_NOCLIENTSIZE)) diff --git a/gdk/win32/gdksurface-win32.c b/gdk/win32/gdksurface-win32.c index 9ecbb6dbad..076e18aac1 100644 --- a/gdk/win32/gdksurface-win32.c +++ b/gdk/win32/gdksurface-win32.c @@ -4828,7 +4828,10 @@ gdk_win32_toplevel_set_property (GObject *object, GDK_SURFACE (surface)->modal_hint = g_value_get_boolean (value); if (GDK_SURFACE (surface)->modal_hint) - _gdk_push_modal_window (surface); + { + SetCapture (GDK_SURFACE_HWND (surface)); + _gdk_push_modal_window (surface); + } g_object_notify_by_pspec (G_OBJECT (surface), pspec); break;