Use combobox for category list on Elements sidebar panel

And replace GtkPaned with GtkBox: the elements are not expected
to have a resize handle between them.

Change-Id: I9ba170458754fe28052007e8051d3814dc7d2ea0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138501
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
diff --git a/starmath/source/SmElementsPanel.cxx b/starmath/source/SmElementsPanel.cxx
index 432e58d0..08ff6af 100644
--- a/starmath/source/SmElementsPanel.cxx
+++ b/starmath/source/SmElementsPanel.cxx
@@ -40,16 +40,16 @@ std::unique_ptr<PanelLayout> SmElementsPanel::Create(weld::Widget& rParent,
SmElementsPanel::SmElementsPanel(weld::Widget& rParent, const SfxBindings& rBindings)
    : PanelLayout(&rParent, "MathElementsPanel", "modules/smath/ui/sidebarelements_math.ui")
    , mrBindings(rBindings)
    , mxCategoryList(m_xBuilder->weld_tree_view("categorylist"))
    , mxCategoryList(m_xBuilder->weld_combo_box("categorylist"))
    , mxElementsControl(std::make_unique<SmElementsControl>(m_xBuilder->weld_icon_view("elements")))
{
    for (const auto& rCategoryId : SmElementsControl::categories())
        mxCategoryList->append_text(SmResId(rCategoryId));

    mxCategoryList->set_size_request(-1, mxCategoryList->get_height_rows(6));
    mxCategoryList->set_size_request(-1, -1);

    mxCategoryList->connect_changed(LINK(this, SmElementsPanel, CategorySelectedHandle));
    mxCategoryList->select(0);
    mxCategoryList->set_active(0);

    mxElementsControl->setElementSetIndex(0);
    mxElementsControl->SetSelectHdl(LINK(this, SmElementsPanel, ElementClickHandler));
@@ -61,9 +61,9 @@ SmElementsPanel::~SmElementsPanel()
    mxCategoryList.reset();
}

IMPL_LINK(SmElementsPanel, CategorySelectedHandle, weld::TreeView&, rList, void)
IMPL_LINK(SmElementsPanel, CategorySelectedHandle, weld::ComboBox&, rList, void)
{
    const int nActive = rList.get_selected_index();
    const int nActive = rList.get_active();
    if (nActive == -1)
        return;
    mxElementsControl->setElementSetIndex(nActive);
diff --git a/starmath/source/SmElementsPanel.hxx b/starmath/source/SmElementsPanel.hxx
index d80d53e..d7e4609 100644
--- a/starmath/source/SmElementsPanel.hxx
+++ b/starmath/source/SmElementsPanel.hxx
@@ -40,14 +40,14 @@ public:
    ~SmElementsPanel();

private:
    DECL_LINK(CategorySelectedHandle, weld::TreeView&, void);
    DECL_LINK(CategorySelectedHandle, weld::ComboBox&, void);
    DECL_LINK(ElementClickHandler, OUString, void);

    SmViewShell* GetView() const;

    const SfxBindings& mrBindings;

    std::unique_ptr<weld::TreeView> mxCategoryList;
    std::unique_ptr<weld::ComboBox> mxCategoryList;
    std::unique_ptr<SmElementsControl> mxElementsControl;
};

diff --git a/starmath/uiconfig/smath/ui/sidebarelements_math.ui b/starmath/uiconfig/smath/ui/sidebarelements_math.ui
index 80bdfda..b9a5736 100644
--- a/starmath/uiconfig/smath/ui/sidebarelements_math.ui
+++ b/starmath/uiconfig/smath/ui/sidebarelements_math.ui
@@ -2,14 +2,6 @@
<!-- Generated with glade 3.38.1 -->
<interface domain="sm">
  <requires lib="gtk+" version="3.20"/>
  <object class="GtkTreeStore" id="liststore1">
    <columns>
      <!-- column-name text -->
      <column type="gchararray"/>
      <!-- column-name id -->
      <column type="gchararray"/>
    </columns>
  </object>
  <object class="GtkTreeStore" id="liststore2">
    <columns>
      <!-- column-name expander -->
@@ -18,47 +10,24 @@
      <column type="gchararray"/>
    </columns>
  </object>
  <object class="GtkPaned" id="MathElementsPanel">
  <object class="GtkBox" id="MathElementsPanel">
    <property name="visible">True</property>
    <property name="can-focus">False</property>
    <property name="orientation">vertical</property>
    <property name="hexpand">True</property>
    <property name="vexpand">True</property>
    <property name="border-width">6</property>
    <property name="wide-handle">True</property>
    <property name="spacing">6</property>
    <child>
      <object class="GtkScrolledWindow">
      <object class="GtkComboBoxText" id="categorylist">
        <property name="visible">True</property>
        <property name="can-focus">True</property>
        <property name="hexpand">True</property>
        <property name="vexpand">True</property>
        <property name="shadow-type">in</property>
        <child>
          <object class="GtkTreeView" id="categorylist">
            <property name="visible">True</property>
            <property name="can-focus">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">0</property>
            <property name="show-expanders">False</property>
            <child internal-child="selection">
              <object class="GtkTreeSelection" id="treeview-selection2"/>
            </child>
            <child>
              <object class="GtkTreeViewColumn" id="treeviewcolumn0">
                <child>
                  <object class="GtkCellRendererText" id="cellrenderertext1"/>
                  <attributes>
                    <attribute name="text">0</attribute>
                  </attributes>
                </child>
              </object>
            </child>
          </object>
        </child>
        <property name="tooltip-text" translatable="yes" context="mathelementspanel|ElementCategories|tooltip_text">Element categories</property>
      </object>
      <packing>
        <property name="expand">False</property>
        <property name="fill">True</property>
        <property name="position">0</property>
      </packing>
    </child>
    <child>
      <object class="GtkScrolledWindow">
@@ -81,8 +50,9 @@
        </child>
      </object>
      <packing>
        <property name="resize">True</property>
        <property name="shrink">True</property>
        <property name="expand">False</property>
        <property name="fill">True</property>
        <property name="position">1</property>
      </packing>
    </child>
  </object>