summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-08-30 13:45:12 +0100
committerCaolán McNamara <caolanm@redhat.com>2018-08-30 17:35:47 +0200
commiteac4bd8e3c84ba4afe153e42cc82b263f62b5e11 (patch)
tree56aac593c30e83533a7e5cd64ae5e12471f524ce
parent80d071f834b13c73b14335ed6298daf895aecdb3 (diff)
tdf#119579 skip floating windows as potential parent for missing help dialog
Change-Id: Ibcee9a6aab0b04bf52f3e75a46f52d98864eee4c Reviewed-on: https://gerrit.libreoffice.org/59808 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--sfx2/source/appl/sfxhelp.cxx17
1 files changed, 17 insertions, 0 deletions
diff --git a/sfx2/source/appl/sfxhelp.cxx b/sfx2/source/appl/sfxhelp.cxx
index 14d9fb4e10d3..8092367eafce 100644
--- a/sfx2/source/appl/sfxhelp.cxx
+++ b/sfx2/source/appl/sfxhelp.cxx
@@ -726,6 +726,21 @@ static bool impl_showOfflineHelp( const OUString& rURL )
return false;
}
+namespace
+{
+ // tdf#119579 skip floating windows as potential parent for missing help dialog
+ const vcl::Window* GetBestParent(const vcl::Window* pWindow)
+ {
+ while (pWindow)
+ {
+ if (pWindow->IsSystemWindow() && pWindow->GetType() != WindowType::FLOATINGWINDOW)
+ break;
+ pWindow = pWindow->GetParent();
+ }
+ return pWindow;
+ }
+}
+
bool SfxHelp::Start_Impl(const OUString& rURL, const vcl::Window* pWindow, const OUString& rKeyword)
{
OUStringBuffer aHelpRootURL("vnd.sun.star.help://");
@@ -831,6 +846,8 @@ bool SfxHelp::Start_Impl(const OUString& rURL, const vcl::Window* pWindow, const
SvtHelpOptions aHelpOptions;
bool bShowOfflineHelpPopUp = aHelpOptions.IsOfflineHelpPopUp();
+ pWindow = GetBestParent(pWindow);
+
if(bShowOfflineHelpPopUp)
{
std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(pWindow ? pWindow->GetFrameWeld() : nullptr, "sfx/ui/helpmanual.ui"));