Resolves: tdf#130364 let font treeview fit to available dialog space

Change-Id: Ia000f4cfa041733fc84b45c955e69251c3ce9bcc
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87871
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/cui/source/options/fontsubs.cxx b/cui/source/options/fontsubs.cxx
index 5db165c..d9d4deb 100644
--- a/cui/source/options/fontsubs.cxx
+++ b/cui/source/options/fontsubs.cxx
@@ -52,12 +52,13 @@ SvxFontSubstTabPage::SvxFontSubstTabPage(weld::Container* pPage, weld::DialogCon
    m_sAutomatic = m_xFontNameLB->get_text(0);
    assert(!m_sAutomatic.isEmpty());

    m_xCheckLB->set_size_request(m_xCheckLB->get_approximate_digit_width() * 80,
                                 m_xCheckLB->get_height_rows(10));
    m_xCheckLB->set_size_request(m_xCheckLB->get_approximate_digit_width() * 60,
                                 m_xCheckLB->get_height_rows(8));
    m_xCheckLB->set_help_id(HID_OFA_FONT_SUBST_CLB);
    m_xCheckLB->set_selection_mode(SelectionMode::Multiple);

    setColSizes();
    setColSizes(m_xCheckLB->get_size_request());
    m_xCheckLB->connect_size_allocate(LINK(this, SvxFontSubstTabPage, ResizeHdl));

    m_xCheckLB->set_centered_column(1);
    m_xCheckLB->set_centered_column(2);
@@ -111,7 +112,7 @@ IMPL_LINK(SvxFontSubstTabPage, HeaderBarClick, int, nColumn, void)
    }
}

void SvxFontSubstTabPage::setColSizes()
void SvxFontSubstTabPage::setColSizes(const Size& rSize)
{
    int nW1 = m_xCheckLB->get_pixel_size(m_xCheckLB->get_column_title(3)).Width();
    int nW2 = m_xCheckLB->get_pixel_size(m_xCheckLB->get_column_title(4)).Width();
@@ -119,7 +120,7 @@ void SvxFontSubstTabPage::setColSizes()
    int nMin = m_xCheckLB->get_checkbox_column_width();
    nMax = std::max(nMax, nMin);
    const int nDoubleMax = 2*nMax;
    const int nRest = m_xCheckLB->get_size_request().Width() - nDoubleMax;
    const int nRest = rSize.Width() - nDoubleMax;
    std::vector<int> aWidths;
    aWidths.push_back(1);   // just abandon the built-in column for checkbuttons and use another
    aWidths.push_back(nMax);
@@ -128,6 +129,11 @@ void SvxFontSubstTabPage::setColSizes()
    m_xCheckLB->set_column_fixed_widths(aWidths);
}

IMPL_LINK(SvxFontSubstTabPage, ResizeHdl, const Size&, rSize, void)
{
    setColSizes(rSize);
}

SvxFontSubstTabPage::~SvxFontSubstTabPage()
{
}
diff --git a/cui/source/options/fontsubs.hxx b/cui/source/options/fontsubs.hxx
index c7b141d..7af81e2 100644
--- a/cui/source/options/fontsubs.hxx
+++ b/cui/source/options/fontsubs.hxx
@@ -43,10 +43,12 @@ class SvxFontSubstTabPage : public SfxTabPage
    DECL_LINK(TreeListBoxSelectHdl, weld::TreeView&, void);
    DECL_LINK(NonPropFontsHdl, weld::ToggleButton&, void);
    DECL_LINK(HeaderBarClick, int, void);
    DECL_LINK(ResizeHdl, const Size&, void);

    void SelectHdl(const weld::Widget* pWidget);

    void            CheckEnable();
    void            setColSizes();
    void            setColSizes(const Size& rSize);

public:
    SvxFontSubstTabPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rSet);
diff --git a/cui/uiconfig/ui/optfontspage.ui b/cui/uiconfig/ui/optfontspage.ui
index 530a531..52524bd 100644
--- a/cui/uiconfig/ui/optfontspage.ui
+++ b/cui/uiconfig/ui/optfontspage.ui
@@ -43,6 +43,7 @@
  <object class="GtkBox" id="OptFontsPage">
    <property name="visible">True</property>
    <property name="can_focus">False</property>
    <property name="vexpand">True</property>
    <property name="border_width">6</property>
    <property name="orientation">vertical</property>
    <property name="spacing">12</property>
@@ -108,95 +109,107 @@
                      </packing>
                    </child>
                    <child>
                      <object class="GtkScrolledWindow" id="checklbscroll">
                      <object class="GtkBox" id="box2">
                        <property name="visible">True</property>
                        <property name="can_focus">True</property>
                        <property name="hexpand">True</property>
                        <property name="can_focus">False</property>
                        <property name="vexpand">True</property>
                        <property name="shadow_type">in</property>
                        <child>
                          <object class="GtkTreeView" id="checklb">
                          <object class="GtkScrolledWindow" id="checklbscroll">
                            <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="search_column">0</property>
                            <property name="show_expanders">False</property>
                            <child internal-child="selection">
                              <object class="GtkTreeSelection" id="Macro Library List-selection2"/>
                            </child>
                            <property name="shadow_type">in</property>
                            <child>
                              <object class="GtkTreeViewColumn" id="treeviewcolumn1">
                                <property name="resizable">True</property>
                                <property name="spacing">6</property>
                                <child>
                                  <object class="GtkCellRendererToggle" id="cellrenderer1"/>
                                  <attributes>
                                    <attribute name="visible">6</attribute>
                                    <attribute name="active">0</attribute>
                                  </attributes>
                              <object class="GtkTreeView" id="checklb">
                                <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="search_column">0</property>
                                <property name="show_expanders">False</property>
                                <child internal-child="selection">
                                  <object class="GtkTreeSelection" id="Macro Library List-selection2"/>
                                </child>
                              </object>
                            </child>
                            <child>
                              <object class="GtkTreeViewColumn" id="treeviewcolumn4">
                                <property name="resizable">True</property>
                                <property name="spacing">6</property>
                                <property name="title" translatable="yes" context="optfontspage|always">Always</property>
                                <child>
                                  <object class="GtkCellRendererToggle" id="cellrenderer5"/>
                                  <attributes>
                                    <attribute name="visible">7</attribute>
                                    <attribute name="active">1</attribute>
                                  </attributes>
                                  <object class="GtkTreeViewColumn" id="treeviewcolumn1">
                                    <property name="resizable">True</property>
                                    <property name="spacing">6</property>
                                    <child>
                                      <object class="GtkCellRendererToggle" id="cellrenderer1"/>
                                      <attributes>
                                        <attribute name="visible">6</attribute>
                                        <attribute name="active">0</attribute>
                                      </attributes>
                                    </child>
                                  </object>
                                </child>
                              </object>
                            </child>
                            <child>
                              <object class="GtkTreeViewColumn" id="treeviewcolumn7">
                                <property name="resizable">True</property>
                                <property name="spacing">6</property>
                                <property name="title" translatable="yes" context="optfontspage|screenonly">Screen only</property>
                                <child>
                                  <object class="GtkCellRendererToggle" id="cellrenderer7"/>
                                  <attributes>
                                    <attribute name="visible">8</attribute>
                                    <attribute name="active">2</attribute>
                                  </attributes>
                                  <object class="GtkTreeViewColumn" id="treeviewcolumn4">
                                    <property name="resizable">True</property>
                                    <property name="spacing">6</property>
                                    <property name="title" translatable="yes" context="optfontspage|always">Always</property>
                                    <child>
                                      <object class="GtkCellRendererToggle" id="cellrenderer5"/>
                                      <attributes>
                                        <attribute name="visible">7</attribute>
                                        <attribute name="active">1</attribute>
                                      </attributes>
                                    </child>
                                  </object>
                                </child>
                              </object>
                            </child>
                            <child>
                              <object class="GtkTreeViewColumn" id="treeviewcolumn5">
                                <property name="resizable">True</property>
                                <property name="spacing">6</property>
                                <property name="title" translatable="yes" context="optfontspage|font">Font</property>
                                <property name="clickable">True</property>
                                <child>
                                  <object class="GtkCellRendererText" id="cellrenderer4"/>
                                  <attributes>
                                    <attribute name="text">3</attribute>
                                  </attributes>
                                  <object class="GtkTreeViewColumn" id="treeviewcolumn7">
                                    <property name="resizable">True</property>
                                    <property name="spacing">6</property>
                                    <property name="title" translatable="yes" context="optfontspage|screenonly">Screen only</property>
                                    <child>
                                      <object class="GtkCellRendererToggle" id="cellrenderer7"/>
                                      <attributes>
                                        <attribute name="visible">8</attribute>
                                        <attribute name="active">2</attribute>
                                      </attributes>
                                    </child>
                                  </object>
                                </child>
                              </object>
                            </child>
                            <child>
                              <object class="GtkTreeViewColumn" id="treeviewcolumn9">
                                <property name="resizable">True</property>
                                <property name="spacing">6</property>
                                <property name="title" translatable="yes" context="optfontspage|replacewith">Replace with</property>
                                <property name="clickable">True</property>
                                <child>
                                  <object class="GtkCellRendererText" id="cellrenderer9"/>
                                  <attributes>
                                    <attribute name="text">4</attribute>
                                  </attributes>
                                  <object class="GtkTreeViewColumn" id="treeviewcolumn5">
                                    <property name="resizable">True</property>
                                    <property name="spacing">6</property>
                                    <property name="title" translatable="yes" context="optfontspage|font">Font</property>
                                    <property name="clickable">True</property>
                                    <child>
                                      <object class="GtkCellRendererText" id="cellrenderer4"/>
                                      <attributes>
                                        <attribute name="text">3</attribute>
                                      </attributes>
                                    </child>
                                  </object>
                                </child>
                                <child>
                                  <object class="GtkTreeViewColumn" id="treeviewcolumn9">
                                    <property name="resizable">True</property>
                                    <property name="spacing">6</property>
                                    <property name="title" translatable="yes" context="optfontspage|replacewith">Replace with</property>
                                    <property name="clickable">True</property>
                                    <child>
                                      <object class="GtkCellRendererText" id="cellrenderer9"/>
                                      <attributes>
                                        <attribute name="text">4</attribute>
                                      </attributes>
                                    </child>
                                  </object>
                                </child>
                              </object>
                            </child>
                          </object>
                          <packing>
                            <property name="expand">True</property>
                            <property name="fill">True</property>
                            <property name="position">0</property>
                          </packing>
                        </child>
                      </object>
                      <packing>