[Libreoffice-commits] core.git: 2 commits - basctl/source cui/source cui/uiconfig include/vcl sc/source sc/uiconfig solenv/sanitizers sw/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Tue Feb 12 11:48:24 UTC 2019


 basctl/source/dlged/managelang.cxx          |    2 
 cui/source/dialogs/multipat.cxx             |    2 
 cui/source/dialogs/srchxtra.cxx             |    2 
 cui/source/options/certpath.cxx             |    2 
 cui/source/tabpages/autocdlg.cxx            |    6 
 cui/uiconfig/ui/acoroptionspage.ui          |    2 
 include/vcl/weld.hxx                        |    2 
 sc/source/ui/inc/solveroptions.hxx          |   53 +++--
 sc/source/ui/miscdlgs/optsolver.cxx         |    9 
 sc/source/ui/miscdlgs/protectiondlg.cxx     |    2 
 sc/source/ui/miscdlgs/solveroptions.cxx     |  274 ++++++++++------------------
 sc/uiconfig/scalc/ui/solveroptionsdialog.ui |  185 ++++++++++++------
 solenv/sanitizers/ui/cui.suppr              |    1 
 sw/source/ui/config/optload.cxx             |    2 
 sw/source/ui/index/cnttab.cxx               |    2 
 15 files changed, 277 insertions(+), 269 deletions(-)

New commits:
commit a8f21e120b1073d7019d41e85cc9a15104ed5c93
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Tue Feb 12 09:55:25 2019 +0000
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Tue Feb 12 12:48:10 2019 +0100

    merge together as get_checkbox_column_width
    
    Change-Id: I183d2d94ab60c128b136674ef40eeb30057b281c
    Reviewed-on: https://gerrit.libreoffice.org/67714
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/basctl/source/dlged/managelang.cxx b/basctl/source/dlged/managelang.cxx
index d6ab5d30e4ac..6813a96904c4 100644
--- a/basctl/source/dlged/managelang.cxx
+++ b/basctl/source/dlged/managelang.cxx
@@ -231,7 +231,7 @@ SetDefaultLanguageDialog::SetDefaultLanguageDialog(weld::Window* pParent, std::s
     m_xLanguageLB->set_size_request(-1, m_xLanguageLB->get_height_rows(10));
     m_xCheckLangLB->set_size_request(-1, m_xCheckLangLB->get_height_rows(10));
     std::vector<int> aWidths;
-    aWidths.push_back(m_xCheckLangLB->get_approximate_digit_width() * 3 + 6);
+    aWidths.push_back(m_xCheckLangLB->get_checkbox_column_width());
     m_xCheckLangLB->set_column_fixed_widths(aWidths);
 
     if (m_xLocalizationMgr->isLibraryLocalized())
diff --git a/cui/source/dialogs/multipat.cxx b/cui/source/dialogs/multipat.cxx
index 35ea7c80d489..b6e409e5d011 100644
--- a/cui/source/dialogs/multipat.cxx
+++ b/cui/source/dialogs/multipat.cxx
@@ -199,7 +199,7 @@ SvxMultiPathDialog::SvxMultiPathDialog(weld::Window* pParent)
                                  m_xRadioLB->get_text_height() * 10);
 
     std::vector<int> aWidths;
-    aWidths.push_back(m_xRadioLB->get_approximate_digit_width() * 3 + 6);
+    aWidths.push_back(m_xRadioLB->get_checkbox_column_width());
     m_xRadioLB->set_column_fixed_widths(aWidths);
 
     std::vector<int> aRadioColumns;
diff --git a/cui/source/dialogs/srchxtra.cxx b/cui/source/dialogs/srchxtra.cxx
index 94ae52d9e0b4..39161e40765a 100644
--- a/cui/source/dialogs/srchxtra.cxx
+++ b/cui/source/dialogs/srchxtra.cxx
@@ -113,7 +113,7 @@ SvxSearchAttributeDialog::SvxSearchAttributeDialog(weld::Window* pParent,
                                 m_xAttrLB->get_height_rows(12));
 
     std::vector<int> aWidths;
-    aWidths.push_back(m_xAttrLB->get_approximate_digit_width() * 3 + 6);
+    aWidths.push_back(m_xAttrLB->get_checkbox_column_width());
     m_xAttrLB->set_column_fixed_widths(aWidths);
 
     m_xOKBtn->connect_clicked(LINK( this, SvxSearchAttributeDialog, OKHdl));
diff --git a/cui/source/options/certpath.cxx b/cui/source/options/certpath.cxx
index 4a83dad29b94..37eeadc07641 100644
--- a/cui/source/options/certpath.cxx
+++ b/cui/source/options/certpath.cxx
@@ -38,7 +38,7 @@ CertPathDialog::CertPathDialog(weld::Window* pParent)
                                       m_xCertPathList->get_height_rows(6));
 
     std::vector<int> aWidths;
-    aWidths.push_back(m_xCertPathList->get_approximate_digit_width() * 3 + 6);
+    aWidths.push_back(m_xCertPathList->get_checkbox_column_width());
     aWidths.push_back(m_xCertPathList->get_approximate_digit_width() * 20);
     m_xCertPathList->set_column_fixed_widths(aWidths);
 
diff --git a/cui/source/tabpages/autocdlg.cxx b/cui/source/tabpages/autocdlg.cxx
index 03494f6d17f0..5e915f8ba31b 100644
--- a/cui/source/tabpages/autocdlg.cxx
+++ b/cui/source/tabpages/autocdlg.cxx
@@ -189,7 +189,7 @@ OfaAutocorrOptionsPage::OfaAutocorrOptionsPage(TabPageParent pParent, const SfxI
     , m_xCheckLB(m_xBuilder->weld_tree_view("checklist"))
 {
     std::vector<int> aWidths;
-    aWidths.push_back(m_xCheckLB->get_approximate_digit_width() * 3 + 6);
+    aWidths.push_back(m_xCheckLB->get_checkbox_column_width());
     m_xCheckLB->set_column_fixed_widths(aWidths);
     m_xCheckLB->set_size_request(-1, m_xCheckLB->get_height_rows(10));
 }
@@ -1584,7 +1584,7 @@ OfaQuoteTabPage::OfaQuoteTabPage(TabPageParent pParent, const SfxItemSet& rSet)
     else
     {
         std::vector<int> aWidths;
-        aWidths.push_back(m_xSwCheckLB->get_approximate_digit_width() * 3 + 6);
+        aWidths.push_back(m_xSwCheckLB->get_checkbox_column_width());
         m_xCheckLB->set_column_fixed_widths(aWidths);
         m_xSwCheckLB->hide();
     }
@@ -2131,7 +2131,7 @@ OfaSmartTagOptionsTabPage::OfaSmartTagOptionsTabPage(TabPageParent pParent,
                                          m_xSmartTagTypesLB->get_height_rows(6));
 
     std::vector<int> aWidths;
-    aWidths.push_back(m_xSmartTagTypesLB->get_approximate_digit_width() * 3 + 6);
+    aWidths.push_back(m_xSmartTagTypesLB->get_checkbox_column_width());
     m_xSmartTagTypesLB->set_column_fixed_widths(aWidths);
 
     // set the handlers:
diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index 311136279c37..bdd80ac3c635 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -618,6 +618,8 @@ public:
     virtual OUString get_column_title(int nColumn) const = 0;
     virtual void set_column_title(int nColumn, const OUString& rTitle) = 0;
 
+    int get_checkbox_column_width() const { return get_approximate_digit_width() * 3 + 6; }
+
     virtual void set_selection_mode(SelectionMode eMode) = 0;
     virtual int count_selected_rows() const = 0;
 
diff --git a/sc/source/ui/miscdlgs/protectiondlg.cxx b/sc/source/ui/miscdlgs/protectiondlg.cxx
index 0f3e1384ae3c..f363f412a423 100644
--- a/sc/source/ui/miscdlgs/protectiondlg.cxx
+++ b/sc/source/ui/miscdlgs/protectiondlg.cxx
@@ -62,7 +62,7 @@ ScTableProtectionDlg::ScTableProtectionDlg(weld::Window* pParent)
     m_aDeleteRows = m_xDeleteRows->get_label();
 
     std::vector<int> aWidths;
-    aWidths.push_back(m_xOptionsListBox->get_approximate_digit_width() * 3 + 6);
+    aWidths.push_back(m_xOptionsListBox->get_checkbox_column_width());
     m_xOptionsListBox->set_column_fixed_widths(aWidths);
 
     Init();
diff --git a/sc/source/ui/miscdlgs/solveroptions.cxx b/sc/source/ui/miscdlgs/solveroptions.cxx
index eaedf2ab296f..77ad31bc86e9 100644
--- a/sc/source/ui/miscdlgs/solveroptions.cxx
+++ b/sc/source/ui/miscdlgs/solveroptions.cxx
@@ -71,7 +71,7 @@ ScSolverOptionsDialog::ScSolverOptionsDialog(weld::Window* pParent,
                                     m_xLbSettings->get_height_rows(6));
 
     std::vector<int> aWidths;
-    aWidths.push_back(m_xLbSettings->get_approximate_digit_width() * 3 + 6);
+    aWidths.push_back(m_xLbSettings->get_checkbox_column_width());
     m_xLbSettings->set_column_fixed_widths(aWidths);
 
     m_xLbEngine->connect_changed( LINK( this, ScSolverOptionsDialog, EngineSelectHdl ) );
diff --git a/sw/source/ui/config/optload.cxx b/sw/source/ui/config/optload.cxx
index 1584ea6d50ec..ee185cbeac53 100644
--- a/sw/source/ui/config/optload.cxx
+++ b/sw/source/ui/config/optload.cxx
@@ -490,7 +490,7 @@ SwCaptionOptPage::SwCaptionOptPage(TabPageParent pParent, const SfxItemSet& rSet
     m_xCategoryBox->connect_entry_insert_text(LINK(this, SwCaptionOptPage, TextFilterHdl));
 
     std::vector<int> aWidths;
-    aWidths.push_back(m_xCheckLB->get_approximate_digit_width() * 3 + 6);
+    aWidths.push_back(m_xCheckLB->get_checkbox_column_width());
     m_xCheckLB->set_column_fixed_widths(aWidths);
 
     SwStyleNameMapper::FillUIName(RES_POOLCOLL_LABEL_ABB, m_sIllustration);
diff --git a/sw/source/ui/index/cnttab.cxx b/sw/source/ui/index/cnttab.cxx
index a521961dc243..ce4ca2867a05 100644
--- a/sw/source/ui/index/cnttab.cxx
+++ b/sw/source/ui/index/cnttab.cxx
@@ -781,7 +781,7 @@ SwTOXSelectTabPage::SwTOXSelectTabPage(TabPageParent pParent, const SfxItemSet&
     sAddStyleContent = m_xAddStylesCB->get_label();
 
     std::vector<int> aWidths;
-    aWidths.push_back(m_xFromObjCLB->get_approximate_digit_width() * 3 + 6);
+    aWidths.push_back(m_xFromObjCLB->get_checkbox_column_width());
     m_xFromObjCLB->set_column_fixed_widths(aWidths);
 
     for (size_t i = 0; i < SAL_N_ELEMENTS(RES_SRCTYPES); ++i)
commit de0651551b13e58e4a37794e1da6649629be3fc0
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Mon Feb 11 21:33:49 2019 +0000
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Tue Feb 12 12:47:57 2019 +0100

    weld ScSolverOptionsDialog
    
    Change-Id: I940fe1c5b4edf41c66a729c56fa789488fd39ba6
    Reviewed-on: https://gerrit.libreoffice.org/67713
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/cui/uiconfig/ui/acoroptionspage.ui b/cui/uiconfig/ui/acoroptionspage.ui
index 9c10c2b50f58..2bdc0bf3492d 100644
--- a/cui/uiconfig/ui/acoroptionspage.ui
+++ b/cui/uiconfig/ui/acoroptionspage.ui
@@ -37,7 +37,7 @@
             <property name="vexpand">True</property>
             <property name="model">liststore2</property>
             <property name="headers_visible">False</property>
-            <property name="search_column">0</property>
+            <property name="search_column">1</property>
             <property name="show_expanders">False</property>
             <child internal-child="selection">
               <object class="GtkTreeSelection" id="Macro Library List-selection2"/>
diff --git a/sc/source/ui/inc/solveroptions.hxx b/sc/source/ui/inc/solveroptions.hxx
index 73e2dc1c9c40..18bc0ab3012a 100644
--- a/sc/source/ui/inc/solveroptions.hxx
+++ b/sc/source/ui/inc/solveroptions.hxx
@@ -20,46 +20,67 @@
 #ifndef INCLUDED_SC_SOURCE_UI_INC_SOLVEROPTIONS_HXX
 #define INCLUDED_SC_SOURCE_UI_INC_SOLVEROPTIONS_HXX
 
-#include <vcl/button.hxx>
-#include <vcl/dialog.hxx>
-#include <vcl/lstbox.hxx>
 #include <vcl/weld.hxx>
-#include <svx/checklbx.hxx>
 #include <com/sun/star/uno/Sequence.hxx>
 
 namespace com { namespace sun { namespace star {
     namespace beans { struct PropertyValue; }
 } } }
 
-class ScSolverOptionsDialog : public ModalDialog
+class ScSolverOptionsString
 {
-    VclPtr<ListBox> m_pLbEngine;
-    VclPtr<SvxCheckListBox> m_pLbSettings;
-    VclPtr<PushButton> m_pBtnEdit;
+    bool        mbIsDouble;
+    double      mfDoubleValue;
+    sal_Int32   mnIntValue;
+    OUString    msStr;
 
-    std::unique_ptr<SvLBoxButtonData> m_xCheckButtonData;
+public:
+    explicit ScSolverOptionsString(const OUString& rStr)
+        : mbIsDouble(false)
+        , mfDoubleValue(0.0)
+        , mnIntValue(0)
+        , msStr(rStr)
+    {
+    }
+
+    bool      IsDouble() const        { return mbIsDouble; }
+    double    GetDoubleValue() const  { return mfDoubleValue; }
+    sal_Int32 GetIntValue() const     { return mnIntValue; }
+    const OUString& GetText() const   { return msStr; }
+
+    void      SetDoubleValue( double fNew ) { mbIsDouble = true; mfDoubleValue = fNew; }
+    void      SetIntValue( sal_Int32 nNew ) { mbIsDouble = false; mnIntValue = nNew; }
+};
+
+class ScSolverOptionsDialog : public weld::GenericDialogController
+{
     css::uno::Sequence<OUString> maImplNames;
     css::uno::Sequence<OUString> maDescriptions;
-    OUString        maEngine;
+    OUString maEngine;
     css::uno::Sequence<css::beans::PropertyValue> maProperties;
 
-    DECL_LINK( EngineSelectHdl, ListBox&, void );
-    DECL_LINK( SettingsSelHdl, SvTreeListBox*, void );
-    DECL_LINK( SettingsDoubleClickHdl, SvTreeListBox*, bool );
-    DECL_LINK( ButtonHdl, Button*, void );
+    std::vector<std::unique_ptr<ScSolverOptionsString>> m_aOptions;
+
+    std::unique_ptr<weld::ComboBox> m_xLbEngine;
+    std::unique_ptr<weld::TreeView> m_xLbSettings;
+    std::unique_ptr<weld::Button> m_xBtnEdit;
+
+    DECL_LINK( EngineSelectHdl, weld::ComboBox&, void );
+    DECL_LINK( SettingsSelHdl, weld::TreeView&, void );
+    DECL_LINK( SettingsDoubleClickHdl, weld::TreeView&, void );
+    DECL_LINK( ButtonHdl, weld::Button&, void );
 
     void    ReadFromComponent();
     void    FillListBox();
     void    EditOption();
 
 public:
-    ScSolverOptionsDialog( vcl::Window* pParent,
+    ScSolverOptionsDialog( weld::Window* pParent,
                            const css::uno::Sequence<OUString>& rImplNames,
                            const css::uno::Sequence<OUString>& rDescriptions,
                            const OUString& rEngine,
                            const css::uno::Sequence<css::beans::PropertyValue>& rProperties );
     virtual ~ScSolverOptionsDialog() override;
-    virtual void dispose() override;
 
     // already updated in selection handler
     const OUString& GetEngine() const { return maEngine; }
diff --git a/sc/source/ui/miscdlgs/optsolver.cxx b/sc/source/ui/miscdlgs/optsolver.cxx
index 8d26590cfb79..2f4232d2f4f7 100644
--- a/sc/source/ui/miscdlgs/optsolver.cxx
+++ b/sc/source/ui/miscdlgs/optsolver.cxx
@@ -600,12 +600,11 @@ IMPL_LINK( ScOptSolverDlg, BtnHdl, Button*, pBtn, void )
     else if ( pBtn == m_pBtnOpt )
     {
         //! move options dialog to UI lib?
-        ScopedVclPtr<ScSolverOptionsDialog> pOptDlg(
-            VclPtr<ScSolverOptionsDialog>::Create( this, maImplNames, maDescriptions, maEngine, maProperties ));
-        if ( pOptDlg->Execute() == RET_OK )
+        ScSolverOptionsDialog aOptDlg(GetFrameWeld(), maImplNames, maDescriptions, maEngine, maProperties);
+        if (aOptDlg.run() == RET_OK)
         {
-            maEngine = pOptDlg->GetEngine();
-            maProperties = pOptDlg->GetProperties();
+            maEngine = aOptDlg.GetEngine();
+            maProperties = aOptDlg.GetProperties();
         }
     }
 }
diff --git a/sc/source/ui/miscdlgs/solveroptions.cxx b/sc/source/ui/miscdlgs/solveroptions.cxx
index 02616a62db8d..eaedf2ab296f 100644
--- a/sc/source/ui/miscdlgs/solveroptions.cxx
+++ b/sc/source/ui/miscdlgs/solveroptions.cxx
@@ -53,85 +53,33 @@ struct ScSolverOptionsEntry
     }
 };
 
-class ScSolverOptionsString : public SvLBoxString
-{
-    bool        mbIsDouble;
-    double      mfDoubleValue;
-    sal_Int32   mnIntValue;
-
-public:
-    explicit ScSolverOptionsString(const OUString& rStr)
-        : SvLBoxString(rStr)
-        , mbIsDouble(false)
-        , mfDoubleValue(0.0)
-        , mnIntValue(0)
-    {
-    }
-
-    bool      IsDouble() const        { return mbIsDouble; }
-    double    GetDoubleValue() const  { return mfDoubleValue; }
-    sal_Int32 GetIntValue() const     { return mnIntValue; }
-
-    void      SetDoubleValue( double fNew ) { mbIsDouble = true; mfDoubleValue = fNew; }
-    void      SetIntValue( sal_Int32 nNew ) { mbIsDouble = false; mnIntValue = nNew; }
-
-    virtual void Paint(const Point& rPos, SvTreeListBox& rDev, vcl::RenderContext& rRenderContext,
-                       const SvViewDataEntry* pView, const SvTreeListEntry& rEntry) override;
-};
-
-void ScSolverOptionsString::Paint(const Point& rPos, SvTreeListBox& /*rDev*/, vcl::RenderContext& rRenderContext,
-                                  const SvViewDataEntry* /*pView*/, const SvTreeListEntry& /*rEntry*/)
-{
-    //! move position? (SvxLinguTabPage: aPos.X() += 20)
-    OUString aNormalStr(GetText());
-    aNormalStr += ":";
-    rRenderContext.DrawText(rPos, aNormalStr);
-
-    Point aNewPos(rPos);
-    aNewPos.AdjustX(rRenderContext.GetTextWidth(aNormalStr) );
-    vcl::Font aOldFont(rRenderContext.GetFont());
-    vcl::Font aFont(aOldFont);
-    aFont.SetWeight(WEIGHT_BOLD);
-
-    OUString sTxt(' ');
-    if (mbIsDouble)
-        sTxt += rtl::math::doubleToUString(mfDoubleValue,
-            rtl_math_StringFormat_Automatic, rtl_math_DecimalPlaces_Max,
-            ScGlobal::GetpLocaleData()->getNumDecimalSep()[0], true );
-    else
-        sTxt += OUString::number(mnIntValue);
-    rRenderContext.SetFont(aFont);
-    rRenderContext.DrawText(aNewPos, sTxt);
-
-    rRenderContext.SetFont(aOldFont);
-}
-
-ScSolverOptionsDialog::ScSolverOptionsDialog( vcl::Window* pParent,
+ScSolverOptionsDialog::ScSolverOptionsDialog(weld::Window* pParent,
                         const uno::Sequence<OUString>& rImplNames,
                         const uno::Sequence<OUString>& rDescriptions,
                         const OUString& rEngine,
                         const uno::Sequence<beans::PropertyValue>& rProperties )
-    : ModalDialog(pParent, "SolverOptionsDialog",
-        "modules/scalc/ui/solveroptionsdialog.ui")
+    : GenericDialogController(pParent, "modules/scalc/ui/solveroptionsdialog.ui", "SolverOptionsDialog")
     , maImplNames(rImplNames)
     , maDescriptions(rDescriptions)
     , maEngine(rEngine)
     , maProperties(rProperties)
+    , m_xLbEngine(m_xBuilder->weld_combo_box("engine"))
+    , m_xLbSettings(m_xBuilder->weld_tree_view("settings"))
+    , m_xBtnEdit(m_xBuilder->weld_button("edit"))
 {
-    get(m_pLbEngine, "engine");
-    get(m_pLbSettings, "settings");
-    get(m_pBtnEdit, "edit");
+    m_xLbSettings->set_size_request(m_xLbSettings->get_approximate_digit_width() * 32,
+                                    m_xLbSettings->get_height_rows(6));
 
-    m_pLbEngine->SetSelectHdl( LINK( this, ScSolverOptionsDialog, EngineSelectHdl ) );
+    std::vector<int> aWidths;
+    aWidths.push_back(m_xLbSettings->get_approximate_digit_width() * 3 + 6);
+    m_xLbSettings->set_column_fixed_widths(aWidths);
 
-    m_pBtnEdit->SetClickHdl( LINK( this, ScSolverOptionsDialog, ButtonHdl ) );
+    m_xLbEngine->connect_changed( LINK( this, ScSolverOptionsDialog, EngineSelectHdl ) );
 
-    m_pLbSettings->SetStyle( m_pLbSettings->GetStyle()|WB_CLIPCHILDREN );
-    m_pLbSettings->SetForceMakeVisible(true);
-    m_pLbSettings->SetHighlightRange();
+    m_xBtnEdit->connect_clicked( LINK( this, ScSolverOptionsDialog, ButtonHdl ) );
 
-    m_pLbSettings->SetSelectHdl( LINK( this, ScSolverOptionsDialog, SettingsSelHdl ) );
-    m_pLbSettings->SetDoubleClickHdl( LINK( this, ScSolverOptionsDialog, SettingsDoubleClickHdl ) );
+    m_xLbSettings->connect_changed( LINK( this, ScSolverOptionsDialog, SettingsSelHdl ) );
+    m_xLbSettings->connect_row_activated( LINK( this, ScSolverOptionsDialog, SettingsDoubleClickHdl ) );
 
     sal_Int32 nSelect = -1;
     sal_Int32 nImplCount = maImplNames.getLength();
@@ -139,7 +87,7 @@ ScSolverOptionsDialog::ScSolverOptionsDialog( vcl::Window* pParent,
     {
         OUString aImplName( maImplNames[nImpl] );
         OUString aDescription( maDescriptions[nImpl] );   // user-visible descriptions in list box
-        m_pLbEngine->InsertEntry( aDescription );
+        m_xLbEngine->append_text(aDescription);
         if ( aImplName == maEngine )
             nSelect = nImpl;
     }
@@ -155,7 +103,7 @@ ScSolverOptionsDialog::ScSolverOptionsDialog( vcl::Window* pParent,
         maProperties.realloc(0);        // don't use options from different engine
     }
     if ( nSelect >= 0 )                 // select in list box
-        m_pLbEngine->SelectEntryPos( static_cast<sal_uInt16>(nSelect) );
+        m_xLbEngine->set_active(nSelect);
 
     if ( !maProperties.getLength() )
         ReadFromComponent();            // fill maProperties from component (using maEngine)
@@ -164,16 +112,6 @@ ScSolverOptionsDialog::ScSolverOptionsDialog( vcl::Window* pParent,
 
 ScSolverOptionsDialog::~ScSolverOptionsDialog()
 {
-    disposeOnce();
-}
-
-void ScSolverOptionsDialog::dispose()
-{
-    m_xCheckButtonData.reset();
-    m_pLbEngine.clear();
-    m_pLbSettings.clear();
-    m_pBtnEdit.clear();
-    ModalDialog::dispose();
 }
 
 const uno::Sequence<beans::PropertyValue>& ScSolverOptionsDialog::GetProperties()
@@ -181,31 +119,20 @@ const uno::Sequence<beans::PropertyValue>& ScSolverOptionsDialog::GetProperties(
     // update maProperties from list box content
     // order of entries in list box and maProperties is the same
     sal_Int32 nEntryCount = maProperties.getLength();
-    SvTreeList* pModel = m_pLbSettings->GetModel();
-    if ( nEntryCount == static_cast<sal_Int32>(pModel->GetEntryCount()) )
+    if (nEntryCount == m_xLbSettings->n_children())
     {
         for (sal_Int32 nEntryPos=0; nEntryPos<nEntryCount; ++nEntryPos)
         {
             uno::Any& rValue = maProperties[nEntryPos].Value;
-            SvTreeListEntry* pEntry = pModel->GetEntry(nEntryPos);
-
-            bool bHasData = false;
-            sal_uInt16 nItemCount = pEntry->ItemCount();
-            for (sal_uInt16 nItemPos=0; nItemPos<nItemCount && !bHasData; ++nItemPos)
+            if (ScSolverOptionsString* pStringItem = reinterpret_cast<ScSolverOptionsString*>(m_xLbSettings->get_id(nEntryPos).toInt64()))
             {
-                SvLBoxItem& rItem = pEntry->GetItem( nItemPos );
-                ScSolverOptionsString* pStringItem = dynamic_cast<ScSolverOptionsString*>(&rItem);
-                if ( pStringItem )
-                {
-                    if ( pStringItem->IsDouble() )
-                        rValue <<= pStringItem->GetDoubleValue();
-                    else
-                        rValue <<= pStringItem->GetIntValue();
-                    bHasData = true;
-                }
+                if (pStringItem->IsDouble())
+                    rValue <<= pStringItem->GetDoubleValue();
+                else
+                    rValue <<= pStringItem->GetIntValue();
             }
-            if ( !bHasData )
-                rValue <<= ( m_pLbSettings->GetCheckButtonState( pEntry ) == SvButtonState::Checked );
+            else
+                rValue <<= m_xLbSettings->get_toggle(nEntryPos, 0);
         }
     }
     else
@@ -246,14 +173,8 @@ void ScSolverOptionsDialog::FillListBox()
 
     // fill the list box
 
-    m_pLbSettings->SetUpdateMode(false);
-    m_pLbSettings->Clear();
-
-    if (!m_xCheckButtonData)
-        m_xCheckButtonData.reset(new SvLBoxButtonData(m_pLbSettings));
-
-    SvTreeList* pModel = m_pLbSettings->GetModel();
-    SvTreeListEntry* pEntry = nullptr;
+    m_xLbSettings->freeze();
+    m_xLbSettings->clear();
 
     for (sal_Int32 nPos=0; nPos<nCount; nPos++)
     {
@@ -261,46 +182,52 @@ void ScSolverOptionsDialog::FillListBox()
 
         uno::Any aValue = maProperties[nPos].Value;
         uno::TypeClass eClass = aValue.getValueTypeClass();
+
+        m_xLbSettings->insert(nullptr, -1, nullptr, nullptr,
+                              nullptr, nullptr, nullptr, false);
+
         if ( eClass == uno::TypeClass_BOOLEAN )
         {
             // check box entry
-            pEntry = new SvTreeListEntry;
-            std::unique_ptr<SvLBoxButton> xButton(new SvLBoxButton(
-                SvLBoxButtonKind::EnabledCheckbox, m_xCheckButtonData.get()));
-            if ( ScUnoHelpFunctions::GetBoolFromAny( aValue ) )
-                xButton->SetStateChecked();
-            else
-                xButton->SetStateUnchecked();
-            pEntry->AddItem(std::move(xButton));
-            pEntry->AddItem(std::make_unique<SvLBoxContextBmp>(Image(), Image(), false));
-            pEntry->AddItem(std::make_unique<SvLBoxString>(aVisName));
+            m_xLbSettings->set_toggle(nPos, ScUnoHelpFunctions::GetBoolFromAny(aValue), 0);
+            m_xLbSettings->set_text(nPos, aVisName, 1);
         }
         else
         {
             // value entry
-            pEntry = new SvTreeListEntry;
-            pEntry->AddItem(std::make_unique<SvLBoxString>("")); // empty column
-            pEntry->AddItem(std::make_unique<SvLBoxContextBmp>(Image(), Image(), false));
-            std::unique_ptr<ScSolverOptionsString> pItem(
-                new ScSolverOptionsString(aVisName));
-            if ( eClass == uno::TypeClass_DOUBLE )
+            m_xLbSettings->set_text(nPos, aVisName, 1);
+            m_aOptions.emplace_back(new ScSolverOptionsString(aVisName));
+            if (eClass == uno::TypeClass_DOUBLE)
             {
                 double fDoubleValue = 0.0;
-                if ( aValue >>= fDoubleValue )
-                    pItem->SetDoubleValue( fDoubleValue );
+                if (aValue >>= fDoubleValue)
+                    m_aOptions.back()->SetDoubleValue(fDoubleValue);
+
+                OUString sTxt(aVisName);
+                sTxt += ": ";
+                sTxt += rtl::math::doubleToUString(fDoubleValue,
+                    rtl_math_StringFormat_Automatic, rtl_math_DecimalPlaces_Max,
+                    ScGlobal::GetpLocaleData()->getNumDecimalSep()[0], true );
+
+                m_xLbSettings->set_text(nPos, sTxt, 1);
             }
             else
             {
                 sal_Int32 nIntValue = 0;
-                if ( aValue >>= nIntValue )
-                    pItem->SetIntValue( nIntValue );
+                if (aValue >>= nIntValue)
+                    m_aOptions.back()->SetIntValue(nIntValue);
+
+                OUString sTxt(aVisName);
+                sTxt += ": ";
+                sTxt += OUString::number(nIntValue);
+
+                m_xLbSettings->set_text(nPos, sTxt, 1);
             }
-            pEntry->AddItem(std::move(pItem));
+            m_xLbSettings->set_id(nPos, OUString::number(reinterpret_cast<sal_Int64>(m_aOptions.back().get())));
         }
-        pModel->Insert( pEntry );
     }
 
-    m_pLbSettings->SetUpdateMode(true);
+    m_xLbSettings->thaw();
 }
 
 void ScSolverOptionsDialog::ReadFromComponent()
@@ -310,58 +237,63 @@ void ScSolverOptionsDialog::ReadFromComponent()
 
 void ScSolverOptionsDialog::EditOption()
 {
-    SvTreeListEntry* pEntry = m_pLbSettings->GetCurEntry();
-    if (pEntry)
+    int nEntry = m_xLbSettings->get_selected_index();
+    if (nEntry == -1)
+        return;
+    ScSolverOptionsString* pStringItem = reinterpret_cast<ScSolverOptionsString*>(m_xLbSettings->get_id(nEntry).toInt64());
+    if (!pStringItem)
+        return;
+
+    if (pStringItem->IsDouble())
     {
-        sal_uInt16 nItemCount = pEntry->ItemCount();
-        for (sal_uInt16 nPos=0; nPos<nItemCount; ++nPos)
+        ScSolverValueDialog aValDialog(m_xDialog.get());
+        aValDialog.SetOptionName( pStringItem->GetText() );
+        aValDialog.SetValue( pStringItem->GetDoubleValue() );
+        if (aValDialog.run() == RET_OK)
         {
-            SvLBoxItem& rItem = pEntry->GetItem( nPos );
-            ScSolverOptionsString* pStringItem = dynamic_cast<ScSolverOptionsString*>(&rItem);
-            if ( pStringItem )
-            {
-                if ( pStringItem->IsDouble() )
-                {
-                    ScSolverValueDialog aValDialog(GetFrameWeld());
-                    aValDialog.SetOptionName( pStringItem->GetText() );
-                    aValDialog.SetValue( pStringItem->GetDoubleValue() );
-                    if (aValDialog.run() == RET_OK)
-                    {
-                        pStringItem->SetDoubleValue( aValDialog.GetValue() );
-                        m_pLbSettings->InvalidateEntry( pEntry );
-                    }
-                }
-                else
-                {
-                    ScSolverIntegerDialog aIntDialog(GetFrameWeld());
-                    aIntDialog.SetOptionName( pStringItem->GetText() );
-                    aIntDialog.SetValue( pStringItem->GetIntValue() );
-                    if (aIntDialog.run() == RET_OK)
-                    {
-                        pStringItem->SetIntValue(aIntDialog.GetValue());
-                        m_pLbSettings->InvalidateEntry( pEntry );
-                    }
-                }
-            }
+            pStringItem->SetDoubleValue( aValDialog.GetValue() );
+
+            OUString sTxt(pStringItem->GetText());
+            sTxt += ": ";
+            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);
+        }
+    }
+    else
+    {
+        ScSolverIntegerDialog aIntDialog(m_xDialog.get());
+        aIntDialog.SetOptionName( pStringItem->GetText() );
+        aIntDialog.SetValue( pStringItem->GetIntValue() );
+        if (aIntDialog.run() == RET_OK)
+        {
+            pStringItem->SetIntValue(aIntDialog.GetValue());
+
+            OUString sTxt(pStringItem->GetText());
+            sTxt += ": ";
+            sTxt += OUString::number(pStringItem->GetIntValue());
+
+            m_xLbSettings->set_text(nEntry, sTxt, 1);
         }
     }
 }
 
-IMPL_LINK( ScSolverOptionsDialog, ButtonHdl, Button*, pBtn, void )
+IMPL_LINK( ScSolverOptionsDialog, ButtonHdl, weld::Button&, rBtn, void )
 {
-    if (pBtn == m_pBtnEdit)
+    if (&rBtn == m_xBtnEdit.get())
         EditOption();
 }
 
-IMPL_LINK_NOARG(ScSolverOptionsDialog, SettingsDoubleClickHdl, SvTreeListBox*, bool)
+IMPL_LINK_NOARG(ScSolverOptionsDialog, SettingsDoubleClickHdl, weld::TreeView&, void)
 {
     EditOption();
-    return false;
 }
 
-IMPL_LINK_NOARG(ScSolverOptionsDialog, EngineSelectHdl, ListBox&, void)
+IMPL_LINK_NOARG(ScSolverOptionsDialog, EngineSelectHdl, weld::ComboBox&, void)
 {
-    const sal_Int32 nSelectPos = m_pLbEngine->GetSelectedEntryPos();
+    const sal_Int32 nSelectPos = m_xLbEngine->get_active();
     if ( nSelectPos < maImplNames.getLength() )
     {
         OUString aNewEngine( maImplNames[nSelectPos] );
@@ -374,19 +306,19 @@ IMPL_LINK_NOARG(ScSolverOptionsDialog, EngineSelectHdl, ListBox&, void)
     }
 }
 
-IMPL_LINK_NOARG(ScSolverOptionsDialog, SettingsSelHdl, SvTreeListBox*, void)
+IMPL_LINK_NOARG(ScSolverOptionsDialog, SettingsSelHdl, weld::TreeView&, void)
 {
     bool bCheckbox = false;
 
-    SvTreeListEntry* pEntry = m_pLbSettings->GetCurEntry();
-    if (pEntry)
+    int nEntry = m_xLbSettings->get_selected_index();
+    if (nEntry != -1)
     {
-        SvLBoxItem* pItem = pEntry->GetFirstItem(SvLBoxItemType::Button);
-        if (pItem && pItem->GetType() == SvLBoxItemType::Button)
+        ScSolverOptionsString* pStringItem = reinterpret_cast<ScSolverOptionsString*>(m_xLbSettings->get_id(nEntry).toInt64());
+        if (!pStringItem)
             bCheckbox = true;
     }
 
-    m_pBtnEdit->Enable( !bCheckbox );
+    m_xBtnEdit->set_sensitive(!bCheckbox);
 }
 
 ScSolverIntegerDialog::ScSolverIntegerDialog(weld::Window * pParent)
diff --git a/sc/uiconfig/scalc/ui/solveroptionsdialog.ui b/sc/uiconfig/scalc/ui/solveroptionsdialog.ui
index 472a7224eb91..5388ef012fb6 100644
--- a/sc/uiconfig/scalc/ui/solveroptionsdialog.ui
+++ b/sc/uiconfig/scalc/ui/solveroptionsdialog.ui
@@ -1,18 +1,90 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.18.3 -->
+<!-- Generated with glade 3.22.1 -->
 <interface domain="sc">
   <requires lib="gtk+" version="3.18"/>
+  <object class="GtkTreeStore" id="liststore1">
+    <columns>
+      <!-- column-name check1 -->
+      <column type="gboolean"/>
+      <!-- column-name text -->
+      <column type="gchararray"/>
+      <!-- column-name id -->
+      <column type="gchararray"/>
+      <!-- column-name checkvis1 -->
+      <column type="gboolean"/>
+    </columns>
+  </object>
   <object class="GtkDialog" id="SolverOptionsDialog">
     <property name="can_focus">False</property>
     <property name="border_width">6</property>
     <property name="title" translatable="yes" context="solveroptionsdialog|SolverOptionsDialog">Options</property>
     <property name="resizable">False</property>
     <property name="type_hint">dialog</property>
+    <child>
+      <placeholder/>
+    </child>
     <child internal-child="vbox">
       <object class="GtkBox" id="dialog-vbox1">
         <property name="can_focus">False</property>
         <property name="orientation">vertical</property>
         <property name="spacing">12</property>
+        <child internal-child="action_area">
+          <object class="GtkButtonBox" id="dialog-action_area1">
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="ok">
+                <property name="label">gtk-ok</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="cancel">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="help">
+                <property name="label">gtk-help</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+                <property name="secondary">True</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
         <child>
           <object class="GtkGrid" id="grid1">
             <property name="visible">True</property>
@@ -29,10 +101,10 @@
                   <object class="GtkLabel" id="label2">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="xalign">0</property>
                     <property name="label" translatable="yes" context="solveroptionsdialog|label2">Solver engine:</property>
                     <property name="use_underline">True</property>
                     <property name="mnemonic_widget">engine</property>
+                    <property name="xalign">0</property>
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
@@ -66,10 +138,10 @@
                   <object class="GtkLabel" id="label1">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="xalign">0</property>
                     <property name="label" translatable="yes" context="solveroptionsdialog|label1">Settings:</property>
                     <property name="use_underline">True</property>
-                    <property name="mnemonic_widget">settings:border</property>
+                    <property name="mnemonic_widget">settings</property>
+                    <property name="xalign">0</property>
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
@@ -77,13 +149,53 @@
                   </packing>
                 </child>
                 <child>
-                  <object class="svxcorelo-SvxCheckListBox" id="settings:border">
+                  <object class="GtkScrolledWindow">
                     <property name="visible">True</property>
-                    <property name="can_focus">False</property>
+                    <property name="can_focus">True</property>
                     <property name="hexpand">True</property>
                     <property name="vexpand">True</property>
-                    <child internal-child="selection">
-                      <object class="GtkTreeSelection" id="Check List Box-selection1"/>
+                    <property name="shadow_type">in</property>
+                    <child>
+                      <object class="GtkTreeView" id="settings">
+                        <property name="width_request">-1</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <property name="hexpand">True</property>
+                        <property name="vexpand">True</property>
+                        <property name="model">liststore1</property>
+                        <property name="headers_visible">False</property>
+                        <property name="search_column">1</property>
+                        <property name="show_expanders">False</property>
+                        <child internal-child="selection">
+                          <object class="GtkTreeSelection" id="Macro Library List-selection2"/>
+                        </child>
+                        <child>
+                          <object class="GtkTreeViewColumn" id="treeviewcolumn1">
+                            <property name="resizable">True</property>
+                            <property name="spacing">6</property>
+                            <property name="alignment">0.5</property>
+                            <child>
+                              <object class="GtkCellRendererToggle" id="cellrenderer5"/>
+                              <attributes>
+                                <attribute name="visible">3</attribute>
+                                <attribute name="active">0</attribute>
+                              </attributes>
+                            </child>
+                          </object>
+                        </child>
+                        <child>
+                          <object class="GtkTreeViewColumn" id="treeviewcolumn2">
+                            <property name="spacing">6</property>
+                            <child>
+                              <object class="GtkCellRendererText" id="cellrenderertext1"/>
+                              <attributes>
+                                <attribute name="text">1</attribute>
+                              </attributes>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
                     </child>
                   </object>
                   <packing>
@@ -118,63 +230,6 @@
             <property name="position">0</property>
           </packing>
         </child>
-        <child internal-child="action_area">
-          <object class="GtkButtonBox" id="dialog-action_area1">
-            <property name="can_focus">False</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" id="ok">
-                <property name="label">gtk-ok</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="has_default">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="cancel">
-                <property name="label">gtk-cancel</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="help">
-                <property name="label">gtk-help</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">2</property>
-                <property name="secondary">True</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="pack_type">end</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
       </object>
     </child>
     <action-widgets>
diff --git a/solenv/sanitizers/ui/cui.suppr b/solenv/sanitizers/ui/cui.suppr
index efe88e89d490..2e83d8eed13e 100644
--- a/solenv/sanitizers/ui/cui.suppr
+++ b/solenv/sanitizers/ui/cui.suppr
@@ -28,7 +28,6 @@ cui/uiconfig/ui/applyautofmtpage.ui://svtlo-SvSimpleTableContainer[@id='list'] n
 cui/uiconfig/ui/applylocalizedpage.ui://GtkLabel[@id='m'] orphan-label
 cui/uiconfig/ui/applylocalizedpage.ui://GtkLabel[@id='t'] orphan-label
 cui/uiconfig/ui/applylocalizedpage.ui://svtlo-SvSimpleTableContainer[@id='list:border'] no-labelled-by
-cui/uiconfig/ui/applylocalizedpage.ui://svxcorelo-SvxCheckListBox[@id='checklist:border'] no-labelled-by
 cui/uiconfig/ui/applylocalizedpage.ui://GtkLabel[@id='singlestartex'] orphan-label
 cui/uiconfig/ui/applylocalizedpage.ui://GtkLabel[@id='singleendex'] orphan-label
 cui/uiconfig/ui/applylocalizedpage.ui://GtkLabel[@id='doublestartex'] orphan-label


More information about the Libreoffice-commits mailing list