[Libreoffice-commits] core.git: sc/source

Caolán McNamara (via logerrit) logerrit at kemper.freedesktop.org
Fri Dec 13 14:44:07 UTC 2019


 sc/source/ui/miscdlgs/optsolver.cxx     |   15 +++++-----
 sc/source/ui/miscdlgs/solveroptions.cxx |   48 +++++++++++++++++---------------
 2 files changed, 34 insertions(+), 29 deletions(-)

New commits:
commit 63e36e30beeaef36d5071cc94c7a3424ccfd48fd
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Fri Dec 13 12:57:27 2019 +0000
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Fri Dec 13 15:43:16 2019 +0100

    use runAsync for dialog inside another runAsync dialog
    
    Change-Id: Ia0196db2e74ca938ac54f45de5a6d5367ea19690
    Reviewed-on: https://gerrit.libreoffice.org/85112
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

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);
+            }
+        });
     }
 }
 


More information about the Libreoffice-commits mailing list