[Libreoffice-commits] core.git: include/vcl sfx2/source sw/source vcl/unx
Caolán McNamara
caolanm at redhat.com
Thu Dec 21 16:01:25 UTC 2017
include/vcl/sysdata.hxx | 13 +++++++++++++
sfx2/source/appl/appserv.cxx | 11 ++++++++---
sw/source/uibase/app/apphdl.cxx | 10 +++++++++-
vcl/unx/generic/fontmanager/fontconfig.cxx | 10 ++++++----
4 files changed, 36 insertions(+), 8 deletions(-)
New commits:
commit 7cf4eeed81fd333c87dedffa792f5d547b7981f0
Author: Caolán McNamara <caolanm at redhat.com>
Date: Wed Dec 20 15:29:39 2017 +0000
set dbus id for existing DbusSessionHelper users
Change-Id: I64329e21ae79b6607856de9781bee0274b9cb136
Reviewed-on: https://gerrit.libreoffice.org/46854
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/include/vcl/sysdata.hxx b/include/vcl/sysdata.hxx
index 794f424b4448..d05ceb44438a 100644
--- a/include/vcl/sysdata.hxx
+++ b/include/vcl/sysdata.hxx
@@ -98,6 +98,19 @@ struct SystemEnvData
}
};
+inline sal_uInt32 GetDbusId(const SystemEnvData& rData)
+{
+#if defined(_WIN32) || defined( MACOSX ) || defined( ANDROID ) || defined( IOS )
+ (void)rData;
+ return 0;
+#elif defined( UNX )
+ return rData.aWindow;
+#else
+ (void)rData;
+ return 0;
+#endif
+}
+
struct SystemParentData
{
sal_uInt32 nSize; // size in bytes of this structure
diff --git a/sfx2/source/appl/appserv.cxx b/sfx2/source/appl/appserv.cxx
index 78f39b318b6b..31de5352644b 100644
--- a/sfx2/source/appl/appserv.cxx
+++ b/sfx2/source/appl/appserv.cxx
@@ -60,6 +60,7 @@
#include <tools/svlibrary.h>
#include <tools/diagnose_ex.h>
#include <vcl/layout.hxx>
+#include <vcl/sysdata.hxx>
#include <svl/intitem.hxx>
#include <svl/eitem.hxx>
#include <svl/stritem.hxx>
@@ -185,7 +186,7 @@ namespace
return false;
}
}
- void lcl_tryLoadBibliography()
+ void lcl_tryLoadBibliography(const vcl::Window* pTopWindow)
{
// lp#527938, debian#602953, fdo#33266, i#105408
// make sure we actually can instantiate services from base first
@@ -197,7 +198,11 @@ namespace
using namespace svtools;
Reference< XSyncDbusSessionHelper > xSyncDbusSessionHelper(SyncDbusSessionHelper::create(comphelper::getProcessComponentContext()));
Sequence< OUString > vPackages { "libreoffice-base" };
- xSyncDbusSessionHelper->InstallPackageNames(0, vPackages, OUString());
+
+ const SystemEnvData* pEnvData = pTopWindow ? pTopWindow->GetSystemData() : nullptr;
+ sal_uInt32 nDbusId = pEnvData ? GetDbusId(*pEnvData) : 0;
+
+ xSyncDbusSessionHelper->InstallPackageNames(nDbusId, vPackages, OUString());
// Ill be back (hopefully)!
SolarMutexGuard aGuard;
executeRestartDialog(comphelper::getProcessComponentContext(), nullptr, RESTART_REASON_BIBLIOGRAPHY_INSTALL);
@@ -1662,7 +1667,7 @@ void SfxApplication::OfaExec_Impl( SfxRequest& rReq )
break;
case SID_COMP_BIBLIOGRAPHY:
- lcl_tryLoadBibliography();
+ lcl_tryLoadBibliography(GetTopWindow());
break;
}
}
diff --git a/sw/source/uibase/app/apphdl.cxx b/sw/source/uibase/app/apphdl.cxx
index 467112e58956..d30e9b44bdd6 100644
--- a/sw/source/uibase/app/apphdl.cxx
+++ b/sw/source/uibase/app/apphdl.cxx
@@ -44,6 +44,7 @@
#include <svl/ctloptions.hxx>
#include <unotools/useroptions.hxx>
#include <vcl/msgbox.hxx>
+#include <vcl/sysdata.hxx>
#include <vcl/wrkwin.hxx>
#include <svx/insctrl.hxx>
#include <svx/selctrl.hxx>
@@ -420,7 +421,14 @@ void SwMailMergeWizardExecutor::ExecuteMailMergeWizard( const SfxItemSet * pArgs
using namespace svtools;
css::uno::Reference< XSyncDbusSessionHelper > xSyncDbusSessionHelper(SyncDbusSessionHelper::create(comphelper::getProcessComponentContext()));
const css::uno::Sequence< OUString > vPackages{ "libreoffice-base" };
- xSyncDbusSessionHelper->InstallPackageNames(0, vPackages, OUString());
+
+ vcl::Window* pTopWindow = Application::GetActiveTopWindow();
+ if (!pTopWindow)
+ pTopWindow = Application::GetFirstTopLevelWindow();
+ const SystemEnvData* pEnvData = pTopWindow ? pTopWindow->GetSystemData() : nullptr;
+ sal_uInt32 nDbusId = pEnvData ? GetDbusId(*pEnvData) : 0;
+
+ xSyncDbusSessionHelper->InstallPackageNames(nDbusId, vPackages, OUString());
SolarMutexGuard aGuard;
executeRestartDialog(comphelper::getProcessComponentContext(), nullptr, RESTART_REASON_MAILMERGE_INSTALL);
}
diff --git a/vcl/unx/generic/fontmanager/fontconfig.cxx b/vcl/unx/generic/fontmanager/fontconfig.cxx
index 2c16e040cdab..1cff42cd1f44 100644
--- a/vcl/unx/generic/fontmanager/fontconfig.cxx
+++ b/vcl/unx/generic/fontmanager/fontconfig.cxx
@@ -866,11 +866,13 @@ namespace
#if ENABLE_GIO
guint get_xid_for_dbus()
{
- // FIXME: Application::GetActiveTopWindow only returns something sensible if LO currently has the focus
- // (which is not the case when you are trying to debug this...). It should instead return the last active window.
- const vcl::Window *pTopWindow = Application::IsHeadlessModeEnabled() ? nullptr : Application::GetActiveTopWindow();
+ if (Application::IsHeadlessModeEnabled())
+ return 0;
+ const vcl::Window *pTopWindow = Application::GetActiveTopWindow();
+ if (!pTopWindow)
+ pTopWindow = Application::GetFirstTopLevelWindow();
const SystemEnvData* pEnvData = pTopWindow ? pTopWindow->GetSystemData() : nullptr;
- return pEnvData ? pEnvData->aWindow : 0;
+ return pEnvData ? GetDbusId(*pEnvData) : 0;
}
#endif
}
More information about the Libreoffice-commits
mailing list