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 <caol...@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 <c...@libreoffice.org> Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@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 }
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits