diff options
-rw-r--r-- | sc/source/ui/miscdlgs/optsolver.cxx | 15 | ||||
-rw-r--r-- | sc/source/ui/miscdlgs/solveroptions.cxx | 48 |
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); + } + }); } } |