diff options
author | Katarina Behrens <Katarina.Behrens@cib.de> | 2018-03-01 12:23:21 +0100 |
---|---|---|
committer | Katarina Behrens <Katarina.Behrens@cib.de> | 2018-03-06 13:05:10 +0100 |
commit | 683a68cb5106e99db0fbe892b5784d837cf8cb27 (patch) | |
tree | dc43182cb4ae3e9b8c86330b9dbe32e9ef6a5e3b /cui/source/options | |
parent | eef36faf5d8450f9ba5c905da8e87d31c2fa73d5 (diff) |
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: I6e61fa1fc41199c2f16cb80da771202c255f3810
Reviewed-on: https://gerrit.libreoffice.org/50566
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de>
Diffstat (limited to 'cui/source/options')
-rw-r--r-- | cui/source/options/optjava.cxx | 22 | ||||
-rw-r--r-- | cui/source/options/optjava.hxx | 4 | ||||
-rw-r--r-- | cui/source/options/treeopt.cxx | 20 |
3 files changed, 36 insertions, 10 deletions
diff --git a/cui/source/options/optjava.cxx b/cui/source/options/optjava.cxx index 50264e96e777..79e210f125a3 100644 --- a/cui/source/options/optjava.cxx +++ b/cui/source/options/optjava.cxx @@ -26,6 +26,7 @@ #include "optaboutconfig.hxx" #include "optjava.hxx" +#include <treeopt.hxx> #include <dialmgr.hxx> #include <officecfg/Office/Common.hxx> @@ -125,6 +126,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(); @@ -191,6 +193,7 @@ void SvxJavaOptionsPage::dispose() jfw_unlock(); #endif + m_pParentDlg.clear(); m_pJavaEnableCB.clear(); m_pJavaBox.clear(); m_pJavaPathText.clear(); @@ -286,8 +289,7 @@ IMPL_LINK_NOARG(SvxJavaOptionsPage, ParameterHdl_Impl, Button*, void) aParameterList = m_pParamDlg->GetParameters(); if ( jfw_isVMRunning() ) { - SolarMutexGuard aGuard; - svtools::executeRestartDialog(comphelper::getProcessComponentContext(), nullptr, svtools::RESTART_REASON_ASSIGNING_JAVAPARAMETERS); + RequestRestart( svtools::RESTART_REASON_ASSIGNING_JAVAPARAMETERS ); } } } @@ -326,8 +328,7 @@ IMPL_LINK_NOARG(SvxJavaOptionsPage, ClassPathHdl_Impl, Button*, void) sClassPath = m_pPathDlg->GetClassPath(); if ( jfw_isVMRunning() ) { - SolarMutexGuard aGuard; - svtools::executeRestartDialog(comphelper::getProcessComponentContext(), nullptr, svtools::RESTART_REASON_ASSIGNING_FOLDERS); + RequestRestart( svtools::RESTART_REASON_ASSIGNING_FOLDERS ); } } } @@ -562,6 +563,12 @@ 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 ) { @@ -578,8 +585,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() ) @@ -629,9 +635,7 @@ bool SvxJavaOptionsPage::FillItemSet( SfxItemSet* /*rCoreSet*/ ) if ( jfw_isVMRunning() || ( ( 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 0e2d7a62dee5..c533369f6a47 100644 --- a/cui/source/options/optjava.hxx +++ b/cui/source/options/optjava.hxx @@ -32,6 +32,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> @@ -46,6 +47,7 @@ typedef void* JavaInfo; class SvxJavaParameterDlg; class SvxJavaClassPathDlg; class SvxJavaListBox; +class OfaTreeOptionsDialog; // class SvxJavaOptionsPage ---------------------------------------------- @@ -63,6 +65,7 @@ private: VclPtr<SvxJavaParameterDlg> m_pParamDlg; VclPtr<SvxJavaClassPathDlg> m_pPathDlg; + VclPtr<OfaTreeOptionsDialog> m_pParentDlg; #if HAVE_FEATURE_JAVA std::vector<std::unique_ptr<JavaInfo>> m_parJavaInfo; @@ -102,6 +105,7 @@ private: void AddJRE( JavaInfo const * _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 4ff782ae761f..993aaaf7ec86 100644 --- a/cui/source/options/treeopt.cxx +++ b/cui/source/options/treeopt.cxx @@ -476,12 +476,16 @@ struct OptionsGroupInfo }; #define INI_LIST() \ + m_pParent ( pParent ),\ pCurrentPageEntry ( nullptr ),\ sTitle ( GetText() ),\ sNotLoadedError ( CuiResId( RID_SVXSTR_LOAD_ERROR ) ),\ bForgetSelection ( false ),\ bIsFromExtensionManager( false ), \ - bIsForSetDocumentLanguage( false ) + bIsForSetDocumentLanguage( false ), \ + bNeedsRestart ( false ), \ + eRestartReason( svtools::RESTART_REASON_NONE ) + void OfaTreeOptionsDialog::InitWidgets() { @@ -595,6 +599,7 @@ void OfaTreeOptionsDialog::dispose() pEntry = pTreeLB->Next(pEntry); } deleteGroupNames(); + m_pParent.clear(); pOkPB.clear(); pBackPB.clear(); pTreeLB.clear(); @@ -702,6 +707,13 @@ IMPL_LINK_NOARG(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 @@ -2037,6 +2049,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; |