diff --git a/gdk/win32/gdkevents-win32.c b/gdk/win32/gdkevents-win32.c index fad9d70bf8..0f18a1e033 100644 --- a/gdk/win32/gdkevents-win32.c +++ b/gdk/win32/gdkevents-win32.c @@ -2858,7 +2858,16 @@ gdk_event_translate (MSG *msg, case WM_EXITSIZEMOVE: case WM_EXITMENULOOP: - _gdk_win32_end_modal_call (); + if (_modal_operation_in_progress) + _gdk_win32_end_modal_call (); + break; + + case WM_CAPTURECHANGED: + /* Sometimes we don't get WM_EXITSIZEMOVE, for instance when you + select move/size in the menu and then click somewhere without + moving/resizing. We work around this using WM_CAPTURECHANGED. */ + if (_modal_operation_in_progress) + _gdk_win32_end_modal_call (); break; case WM_WINDOWPOSCHANGING: