summaryrefslogtreecommitdiff
path: root/sc/source
diff options
context:
space:
mode:
Diffstat (limited to 'sc/source')
-rw-r--r--sc/source/ui/miscdlgs/optsolver.cxx15
-rw-r--r--sc/source/ui/miscdlgs/solveroptions.cxx48
2 files changed, 34 insertions, 29 deletions
diff --git a/sc/source/ui/miscdlgs/optsolver.cxx b/sc/source/ui/miscdlgs/optsolver.cxx
index b3531383a206..c1e7c5a22b2a 100644
--- a/sc/source/ui/miscdlgs/optsolver.cxx
+++ b/sc/source/ui/miscdlgs/optsolver.cxx
@@ -148,7 +148,6 @@ ScOptSolverSave::ScOptSolverSave( const OUString& rObjective, bool bMax, bool bM
{
}
-
ScOptSolverDlg::ScOptSolverDlg(SfxBindings* pB, SfxChildWindow* pCW, weld::Window* pParent,
ScDocShell* pDocSh, const ScAddress& aCursorPos)
: ScAnyRefDlgController(pB, pCW, pParent, "modules/scalc/ui/solverdlg.ui", "SolverDialog")
@@ -534,12 +533,14 @@ IMPL_LINK(ScOptSolverDlg, BtnHdl, weld::Button&, rBtn, void)
else if (&rBtn == m_xBtnOpt.get())
{
//! move options dialog to UI lib?
- ScSolverOptionsDialog aOptDlg(m_xDialog.get(), maImplNames, maDescriptions, maEngine, maProperties);
- if (aOptDlg.run() == RET_OK)
- {
- maEngine = aOptDlg.GetEngine();
- maProperties = aOptDlg.GetProperties();
- }
+ auto xOptDlg = std::make_shared<ScSolverOptionsDialog>(m_xDialog.get(), maImplNames, maDescriptions, maEngine, maProperties);
+ weld::DialogController::runAsync(xOptDlg, [xOptDlg, this](sal_Int32 nResult){
+ if (nResult == RET_OK)
+ {
+ maEngine = xOptDlg->GetEngine();
+ maProperties = xOptDlg->GetProperties();
+ }
+ });
}
}
diff --git a/sc/source/ui/miscdlgs/solveroptions.cxx b/sc/source/ui/miscdlgs/solveroptions.cxx
index 9e6333db4679..cb86ce10c31c 100644
--- a/sc/source/ui/miscdlgs/solveroptions.cxx
+++ b/sc/source/ui/miscdlgs/solveroptions.cxx
@@ -242,35 +242,39 @@ void ScSolverOptionsDialog::EditOption()
if (pStringItem->IsDouble())
{
- ScSolverValueDialog aValDialog(m_xDialog.get());
- aValDialog.SetOptionName( pStringItem->GetText() );
- aValDialog.SetValue( pStringItem->GetDoubleValue() );
- if (aValDialog.run() == RET_OK)
- {
- pStringItem->SetDoubleValue( aValDialog.GetValue() );
+ auto xValDialog = std::make_shared<ScSolverValueDialog>(m_xDialog.get());
+ xValDialog->SetOptionName(pStringItem->GetText());
+ xValDialog->SetValue(pStringItem->GetDoubleValue());
+ weld::DialogController::runAsync(xValDialog, [xValDialog, nEntry, pStringItem, this](sal_Int32 nResult){
+ if (nResult == RET_OK)
+ {
+ pStringItem->SetDoubleValue(xValDialog->GetValue());
- OUString sTxt(pStringItem->GetText() + ": ");
- sTxt += rtl::math::doubleToUString(pStringItem->GetDoubleValue(),
- rtl_math_StringFormat_Automatic, rtl_math_DecimalPlaces_Max,
- ScGlobal::GetpLocaleData()->getNumDecimalSep()[0], true );
+ OUString sTxt(pStringItem->GetText() + ": ");
+ sTxt += rtl::math::doubleToUString(pStringItem->GetDoubleValue(),
+ rtl_math_StringFormat_Automatic, rtl_math_DecimalPlaces_Max,
+ ScGlobal::GetpLocaleData()->getNumDecimalSep()[0], true );
- m_xLbSettings->set_text(nEntry, sTxt, 1);
- }
+ m_xLbSettings->set_text(nEntry, sTxt, 1);
+ }
+ });
}
else
{
- ScSolverIntegerDialog aIntDialog(m_xDialog.get());
- aIntDialog.SetOptionName( pStringItem->GetText() );
- aIntDialog.SetValue( pStringItem->GetIntValue() );
- if (aIntDialog.run() == RET_OK)
- {
- pStringItem->SetIntValue(aIntDialog.GetValue());
+ auto xIntDialog = std::make_shared<ScSolverIntegerDialog>(m_xDialog.get());
+ xIntDialog->SetOptionName( pStringItem->GetText() );
+ xIntDialog->SetValue( pStringItem->GetIntValue() );
+ weld::DialogController::runAsync(xIntDialog, [xIntDialog, nEntry, pStringItem, this](sal_Int32 nResult){
+ if (nResult == RET_OK)
+ {
+ pStringItem->SetIntValue(xIntDialog->GetValue());
- OUString sTxt(pStringItem->GetText() + ": ");
- sTxt += OUString::number(pStringItem->GetIntValue());
+ OUString sTxt(pStringItem->GetText() + ": ");
+ sTxt += OUString::number(pStringItem->GetIntValue());
- m_xLbSettings->set_text(nEntry, sTxt, 1);
- }
+ m_xLbSettings->set_text(nEntry, sTxt, 1);
+ }
+ });
}
}