summaryrefslogtreecommitdiff
path: root/cui/source/options
diff options
context:
space:
mode:
authorKatarina Behrens <Katarina.Behrens@cib.de>2018-03-01 12:23:21 +0100
committerKatarina Behrens <Katarina.Behrens@cib.de>2018-03-06 13:05:10 +0100
commit683a68cb5106e99db0fbe892b5784d837cf8cb27 (patch)
treedc43182cb4ae3e9b8c86330b9dbe32e9ef6a5e3b /cui/source/options
parenteef36faf5d8450f9ba5c905da8e87d31c2fa73d5 (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.cxx22
-rw-r--r--cui/source/options/optjava.hxx4
-rw-r--r--cui/source/options/treeopt.cxx20
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;