cui/source/inc/treeopt.hxx | 13 +++++++++++-- cui/source/options/optjava.cxx | 21 ++++++++++++--------- cui/source/options/optjava.hxx | 4 ++++ cui/source/options/treeopt.cxx | 19 ++++++++++++++++++- include/svtools/restartdialog.hxx | 4 +++- 5 files changed, 48 insertions(+), 13 deletions(-)
New commits: commit 5bf62a3e7d15108a4754e0b15db9d1cb97bfc3a0 Author: Katarina Behrens <katarina.behr...@cib.de> Date: Tue Mar 6 14:05:54 2018 +0100 After Java settings have changed, restart LibO for real Previously restart LibO dialog was shown, but did nothing. I haven't found an easy way to close all frames with 3 modal dialogs opened, so now restart dialog simply pops up later (after user bonks OK button on Tools > Options dialog) Change-Id: I5638420163da90d514ba251bd84e226d4c74e62b diff --git a/cui/source/inc/treeopt.hxx b/cui/source/inc/treeopt.hxx index 9cac9922a408..1eb79df44b9b 100644 --- a/cui/source/inc/treeopt.hxx +++ b/cui/source/inc/treeopt.hxx @@ -20,6 +20,8 @@ #ifndef INCLUDED_CUI_SOURCE_INC_TREEOPT_HXX #define INCLUDED_CUI_SOURCE_INC_TREEOPT_HXX +#include <sfx2/basedlgs.hxx> +#include <svtools/restartdialog.hxx> #include <tools/resary.hxx> #include <vcl/fixed.hxx> @@ -126,14 +128,16 @@ class SvxColorTabPage; class OfaTreeOptionsDialog : public SfxModalDialog { private: - SvTreeListEntry* pCurrentPageEntry; - VclPtr<OKButton> pOkPB; VclPtr<PushButton> pBackPB; VclPtr<SvTreeListBox> pTreeLB; VclPtr<VclBox> pTabBox; + VclPtr<vcl::Window> m_pParent; + + SvTreeListEntry* pCurrentPageEntry; + OUString sTitle; OUString sNotLoadedError; @@ -147,6 +151,9 @@ private: // check "for the current document only" and set focus to "Western" languages box bool bIsForSetDocumentLanguage; + bool bNeedsRestart; + svtools::RestartReason eRestartReason; + css::uno::Reference < css::awt::XContainerWindowProvider > m_xContainerWinProvider; @@ -194,6 +201,8 @@ public: // helper functions to call the language settings TabPage from the SpellDialog static void ApplyLanguageOptions(const SfxItemSet& rSet); + + void SetNeedsRestart( svtools::RestartReason eReason ); }; // class OfaPageResource ------------------------------------------------- diff --git a/cui/source/options/optjava.cxx b/cui/source/options/optjava.cxx index cbb18b2ef84c..5c175dfbd925 100644 --- a/cui/source/options/optjava.cxx +++ b/cui/source/options/optjava.cxx @@ -21,6 +21,7 @@ #include "optaboutconfig.hxx" #include "optjava.hxx" +#include "treeopt.hxx" #include <dialmgr.hxx> #include <officecfg/Office/Common.hxx> @@ -158,6 +159,7 @@ SvxJavaOptionsPage::SvxJavaOptionsPage( vcl::Window* pParent, const SfxItemSet& get(m_pExperimentalCB, "experimental"); get(m_pMacroCB, "macrorecording"); get(m_pExpertConfigBtn, "expertconfig"); + m_pParentDlg.reset( dynamic_cast<OfaTreeOptionsDialog*>(getNonLayoutParent(pParent)) ); m_sAccessibilityText = get<FixedText>("a11y")->GetText(); m_sAddDialogText = get<FixedText>("selectruntime")->GetText(); @@ -224,6 +226,7 @@ void SvxJavaOptionsPage::dispose() jfw_unlock(); #endif + m_pParentDlg.clear(); m_pJavaEnableCB.clear(); m_pJavaBox.clear(); m_pJavaPathText.clear(); @@ -331,8 +334,7 @@ IMPL_LINK_NOARG_TYPED(SvxJavaOptionsPage, ParameterHdl_Impl, Button*, void) (void)eErr; if ( bRunning ) { - SolarMutexGuard aGuard; - svtools::executeRestartDialog(comphelper::getProcessComponentContext(), nullptr, svtools::RESTART_REASON_ASSIGNING_JAVAPARAMETERS); + RequestRestart( svtools::RESTART_REASON_ASSIGNING_JAVAPARAMETERS ); } } } @@ -376,8 +378,7 @@ IMPL_LINK_NOARG_TYPED(SvxJavaOptionsPage, ClassPathHdl_Impl, Button*, void) (void)eErr; if ( bRunning ) { - SolarMutexGuard aGuard; - svtools::executeRestartDialog(comphelper::getProcessComponentContext(), nullptr, svtools::RESTART_REASON_ASSIGNING_FOLDERS); + RequestRestart( svtools::RESTART_REASON_ASSIGNING_FOLDERS ); } } } @@ -636,6 +637,11 @@ void SvxJavaOptionsPage::AddFolder( const OUString& _rFolder ) #endif } +void SvxJavaOptionsPage::RequestRestart( svtools::RestartReason eReason ) +{ + if ( m_pParentDlg ) + m_pParentDlg->SetNeedsRestart( eReason ); +} VclPtr<SfxTabPage> SvxJavaOptionsPage::Create( vcl::Window* pParent, const SfxItemSet* rAttrSet ) { @@ -652,8 +658,7 @@ bool SvxJavaOptionsPage::FillItemSet( SfxItemSet* /*rCoreSet*/ ) SvtMiscOptions aMiscOpt; aMiscOpt.SetExperimentalMode( m_pExperimentalCB->IsChecked() ); bModified = true; - SolarMutexGuard aGuard; - svtools::executeRestartDialog(comphelper::getProcessComponentContext(), nullptr, svtools::RESTART_REASON_EXP_FEATURES); + RequestRestart( svtools::RESTART_REASON_EXP_FEATURES ); } if ( m_pMacroCB->IsValueChangedFromSaved() ) @@ -714,9 +719,7 @@ bool SvxJavaOptionsPage::FillItemSet( SfxItemSet* /*rCoreSet*/ ) if ( bRunning || ( ( pInfo->nRequirements & JFW_REQUIRE_NEEDRESTART ) == JFW_REQUIRE_NEEDRESTART ) ) { - svtools::executeRestartDialog( - comphelper::getProcessComponentContext(), this, - svtools::RESTART_REASON_JAVA); + RequestRestart( svtools::RESTART_REASON_JAVA ); } eErr = jfw_setSelectedJRE( pInfo ); diff --git a/cui/source/options/optjava.hxx b/cui/source/options/optjava.hxx index 3631d4499e6b..fa8f730c947b 100644 --- a/cui/source/options/optjava.hxx +++ b/cui/source/options/optjava.hxx @@ -31,6 +31,7 @@ #include <sfx2/tabdlg.hxx> #include <com/sun/star/ui/dialogs/XFolderPicker2.hpp> #include <svtools/dialogclosedlistener.hxx> +#include <svtools/restartdialog.hxx> #include <svtools/simptabl.hxx> #include "radiobtnbox.hxx" @@ -45,6 +46,7 @@ typedef void* JavaInfo; class SvxJavaParameterDlg; class SvxJavaClassPathDlg; class SvxJavaListBox; +class OfaTreeOptionsDialog; // class SvxJavaOptionsPage ---------------------------------------------- @@ -62,6 +64,7 @@ private: VclPtr<SvxJavaParameterDlg> m_pParamDlg; VclPtr<SvxJavaClassPathDlg> m_pPathDlg; + VclPtr<OfaTreeOptionsDialog> m_pParentDlg; #if HAVE_FEATURE_JAVA JavaInfo** m_parJavaInfo; @@ -103,6 +106,7 @@ private: void AddJRE( JavaInfo* _pInfo ); void HandleCheckEntry( SvTreeListEntry* _pEntry ); void AddFolder( const OUString& _rFolder ); + void RequestRestart( svtools::RestartReason eReason ); public: SvxJavaOptionsPage( vcl::Window* pParent, const SfxItemSet& rSet ); diff --git a/cui/source/options/treeopt.cxx b/cui/source/options/treeopt.cxx index 36d64cb1f388..5bab843fe73e 100644 --- a/cui/source/options/treeopt.cxx +++ b/cui/source/options/treeopt.cxx @@ -490,6 +490,7 @@ struct OptionsGroupInfo }; #define INI_LIST() \ + m_pParent ( pParent),\ pCurrentPageEntry ( nullptr ),\ sTitle ( GetText() ),\ sNotLoadedError ( CUI_RES( RID_SVXSTR_LOAD_ERROR ) ),\ @@ -497,7 +498,9 @@ struct OptionsGroupInfo mpColorPage ( nullptr ),\ bForgetSelection ( false ),\ bIsFromExtensionManager( false ), \ - bIsForSetDocumentLanguage( false ) + bIsForSetDocumentLanguage( false ),\ + bNeedsRestart( false ),\ + eRestartReason( svtools::RESTART_REASON_NONE ) void OfaTreeOptionsDialog::InitWidgets() { @@ -608,6 +611,7 @@ void OfaTreeOptionsDialog::dispose() delete pColorPageItemSet; pColorPageItemSet = nullptr; deleteGroupNames(); + m_pParent.clear(); pOkPB.clear(); pBackPB.clear(); pTreeLB.clear(); @@ -719,6 +723,13 @@ IMPL_LINK_NOARG_TYPED(OfaTreeOptionsDialog, OKHdl_Impl, Button*, void) pEntry = pTreeLB->Next(pEntry); } EndDialog(RET_OK); + + if ( bNeedsRestart ) + { + SolarMutexGuard aGuard; + ::svtools::executeRestartDialog(comphelper::getProcessComponentContext(), + static_cast<vcl::Window*>(m_pParent), eRestartReason); + } } // an opened group shall be completely visible @@ -2131,6 +2142,12 @@ void OfaTreeOptionsDialog::InsertNodes( const VectorOfNodes& rNodeList ) } } +void OfaTreeOptionsDialog::SetNeedsRestart( svtools::RestartReason eReason) +{ + bNeedsRestart = true; + eRestartReason = eReason; +} + short OfaTreeOptionsDialog::Execute() { std::unique_ptr< SvxDicListChgClamp > pClamp; diff --git a/include/svtools/restartdialog.hxx b/include/svtools/restartdialog.hxx index e04f5f67cb84..80e850b202bc 100644 --- a/include/svtools/restartdialog.hxx +++ b/include/svtools/restartdialog.hxx @@ -47,9 +47,11 @@ enum RestartReason { RESTART_REASON_ASSIGNING_FOLDERS, // "For the assigned folders and archives to take effect, // %PRODUCTNAME must be restarted." - RESTART_REASON_EXP_FEATURES + RESTART_REASON_EXP_FEATURES, // "For the modified experimental features to take effect, // %PRODUCTNAME must be restarted." + RESTART_REASON_NONE + // No particular reason }; // Must be called with the solar mutex locked: _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits