diff options
author | Miklos Vajna <vmiklos@collabora.com> | 2018-11-26 16:34:10 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2018-11-27 00:57:39 +0100 |
commit | f21d2b48bd68424a96aa6cd5572e368208378291 (patch) | |
tree | 137b7fa41fc6de12bee14da42e493e5eadf9a9c7 | |
parent | 27e517b2e592d8516844848a85399c6ed05f18aa (diff) |
tdf#121723 vcl: leave popup mode on focus loss of toplevel windows
This way it can't happen that we open a menu or context menu, the user
switches away (loosing focus) and a leftover floating window is still
there.
Handle this at the same place where we stop blinking the cursor on focus
loss.
Change-Id: I4321e8e3fa1d3f8976c0a1fa29c6a182972023bf
Reviewed-on: https://gerrit.libreoffice.org/64053
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins
-rw-r--r-- | vcl/source/window/winproc.cxx | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/vcl/source/window/winproc.cxx b/vcl/source/window/winproc.cxx index ea29c4a265d7..add5c3b45957 100644 --- a/vcl/source/window/winproc.cxx +++ b/vcl/source/window/winproc.cxx @@ -1842,6 +1842,11 @@ static void ImplHandleLoseFocus( vcl::Window* pWindow ) vcl::Window* pFocusWin = pWindow->ImplGetWindowImpl()->mpFrameData->mpFocusWin; if ( pFocusWin && pFocusWin->ImplGetWindowImpl()->mpCursor ) pFocusWin->ImplGetWindowImpl()->mpCursor->ImplHide(); + + // Make sure that no menu is visible when a toplevel window loses focus. + VclPtr<FloatingWindow> pFirstFloat = pSVData->maWinData.mpFirstFloat; + if (pFirstFloat && !pWindow->GetParent()) + pFirstFloat->EndPopupMode(FloatWinPopupEndFlags::Cancel | FloatWinPopupEndFlags::CloseAll); } struct DelayedCloseEvent |