diff options
author | Szymon Kłos <szymon.klos@collabora.com> | 2020-10-05 16:38:15 +0200 |
---|---|---|
committer | Szymon Kłos <szymon.klos@collabora.com> | 2020-11-12 13:30:31 +0100 |
commit | 5006e4fe6bd5e5a176e2e1837e826a0b67da08e7 (patch) | |
tree | 70c93018b133a4f13716debb913392245accabc1 | |
parent | 92b88e0cc7e3d432acc9ec5a894451018fbf7b95 (diff) |
Don't reuse tooltip window in different context
This causes interference to other views due to usage
of global references in Online.
Change-Id: Ib9346881d4e48ac1ce3456d386806582ade82255
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103994
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105593
Tested-by: Jenkins
-rw-r--r-- | vcl/source/app/help.cxx | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/vcl/source/app/help.cxx b/vcl/source/app/help.cxx index 7f16b6a0a699..4785b47aca3a 100644 --- a/vcl/source/app/help.cxx +++ b/vcl/source/app/help.cxx @@ -498,21 +498,10 @@ void ImplShowHelpWindow( vcl::Window* pParent, sal_uInt16 nHelpWinStyle, QuickHe { SAL_WARN_IF( pHelpWin == pParent, "vcl", "HelpInHelp ?!" ); - if ( ( rHelpText.isEmpty() - || ( pHelpWin->GetWinStyle() != nHelpWinStyle ) - ) - && aHelpData.mbRequestingHelp - ) - { - // remove help window if no HelpText or - // other help mode. but keep it if we are scrolling, ie not requesting help - bool bWasVisible = pHelpWin->IsVisible(); - if ( bWasVisible ) - bNoDelay = true; // display it quickly if we were already in quick help mode - pHelpWin = nullptr; - ImplDestroyHelpWindow( bWasVisible ); - } - else + bool bRemoveHelp = (rHelpText.isEmpty() || (pHelpWin->GetWinStyle() != nHelpWinStyle)) + && aHelpData.mbRequestingHelp; + + if (!bRemoveHelp && pHelpWin->GetParent() == pParent) { bool const bUpdate = (pHelpWin->GetHelpText() != rHelpText) || ((pHelpWin->GetHelpArea() != rHelpArea) && aHelpData.mbRequestingHelp); @@ -525,6 +514,16 @@ void ImplShowHelpWindow( vcl::Window* pParent, sal_uInt16 nHelpWinStyle, QuickHe pHelpWin->Invalidate(); } } + else + { + // remove help window if no HelpText or + // other help mode. but keep it if we are scrolling, ie not requesting help + bool bWasVisible = pHelpWin->IsVisible(); + if ( bWasVisible ) + bNoDelay = true; // display it quickly if we were already in quick help mode + pHelpWin = nullptr; + ImplDestroyHelpWindow( bWasVisible ); + } } if (pHelpWin || rHelpText.isEmpty()) |