summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSzymon Kłos <szymon.klos@collabora.com>2020-10-05 16:38:15 +0200
committerSzymon Kłos <szymon.klos@collabora.com>2020-11-12 13:30:31 +0100
commit5006e4fe6bd5e5a176e2e1837e826a0b67da08e7 (patch)
tree70c93018b133a4f13716debb913392245accabc1
parent92b88e0cc7e3d432acc9ec5a894451018fbf7b95 (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.cxx29
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())