include/vcl/weld/TreeView.hxx      |   31 ++++++++----------
 vcl/inc/qt5/QtInstanceTreeView.hxx |    6 ---
 vcl/inc/salvtables.hxx             |   11 ------
 vcl/qt5/QtInstanceTreeView.cxx     |   27 ----------------
 vcl/source/app/salvtables.cxx      |   29 -----------------
 vcl/source/weld/TreeView.cxx       |   33 +++++++++++++++++++
 vcl/unx/gtk3/gtkinst.cxx           |   62 -------------------------------------
 7 files changed, 47 insertions(+), 152 deletions(-)

New commits:
commit 33c9788f7fc5c32671498481918eec5d93da2abb
Author:     Michael Weghorn <[email protected]>
AuthorDate: Mon Dec 22 22:17:15 2025 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Tue Dec 23 10:12:29 2025 +0100

    weld: Deduplicate TreeView::{g,s}et_text_emphasis implementations
    
    The variant taking an int param can be implemented using
    the variant taking a weld::TreeIter param.
    
    Do so once in the abstract weld::TreeView base class, and drop
    the toolkit-specific implementations.
    
    Also move the method declarations of both methods
    next to each other.
    
    Change-Id: I60fbb6f110886fc8c47a8fd747048ab82cbcda95
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196136
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <[email protected]>

diff --git a/include/vcl/weld/TreeView.hxx b/include/vcl/weld/TreeView.hxx
index 34af6ca7feb3..8e4fc29b0b5b 100644
--- a/include/vcl/weld/TreeView.hxx
+++ b/include/vcl/weld/TreeView.hxx
@@ -259,8 +259,11 @@ public:
                            const css::uno::Reference<css::graphic::XGraphic>& 
rImage, int col = -1)
         = 0;
 
-    virtual void set_text_emphasis(int row, bool bOn, int col) = 0;
-    virtual bool get_text_emphasis(int row, int col) const = 0;
+    void set_text_emphasis(int row, bool bOn, int col);
+    virtual void set_text_emphasis(const TreeIter& rIter, bool bOn, int col) = 
0;
+    bool get_text_emphasis(int row, int col) const;
+    virtual bool get_text_emphasis(const TreeIter& rIter, int col) const = 0;
+
     virtual void set_text_align(int row, TxtAlign eAlign, int col) = 0;
     virtual void swap(int pos1, int pos2) = 0;
     virtual std::vector<int> get_selected_rows() const = 0;
@@ -342,8 +345,6 @@ public:
 
     //visually indent this row as if it was at get_iter_depth() + nIndentLevel
     virtual void set_extra_row_indent(const TreeIter& rIter, int nIndentLevel) 
= 0;
-    virtual void set_text_emphasis(const TreeIter& rIter, bool bOn, int col) = 
0;
-    virtual bool get_text_emphasis(const TreeIter& rIter, int col) const = 0;
     virtual void set_text_align(const TreeIter& rIter, TxtAlign eAlign, int 
col) = 0;
     virtual void set_font_color(const TreeIter& rIter, const Color& rColor) = 
0;
 
diff --git a/vcl/inc/qt5/QtInstanceTreeView.hxx 
b/vcl/inc/qt5/QtInstanceTreeView.hxx
index 425380036505..9706de73d9ef 100644
--- a/vcl/inc/qt5/QtInstanceTreeView.hxx
+++ b/vcl/inc/qt5/QtInstanceTreeView.hxx
@@ -52,8 +52,6 @@ public:
 
     virtual void set_clicks_to_toggle(int nToggleBehavior) override;
 
-    virtual void set_text_emphasis(int nRow, bool bOn, int nCol) override;
-    virtual bool get_text_emphasis(int nRow, int nCol) const override;
     virtual void set_text_align(int nRow, TxtAlign eAlign, int nCol) override;
     virtual void swap(int nPos1, int nPos2) override;
     virtual std::vector<int> get_selected_rows() const override;
diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx
index b3bedc3690a6..6ffad9b8abf9 100644
--- a/vcl/inc/salvtables.hxx
+++ b/vcl/inc/salvtables.hxx
@@ -1700,12 +1700,8 @@ public:
 
     virtual void set_text_emphasis(const weld::TreeIter& rIter, bool bOn, int 
col) override;
 
-    virtual void set_text_emphasis(int pos, bool bOn, int col) override;
-
     virtual bool get_text_emphasis(const weld::TreeIter& rIter, int col) const 
override;
 
-    virtual bool get_text_emphasis(int pos, int col) const override;
-
     void set_text_align(SvTreeListEntry* pEntry, TxtAlign eAlign, int col);
 
     virtual void set_text_align(const weld::TreeIter& rIter, TxtAlign eAlign, 
int col) override;
diff --git a/vcl/qt5/QtInstanceTreeView.cxx b/vcl/qt5/QtInstanceTreeView.cxx
index bffecce0636a..be09d133a64e 100644
--- a/vcl/qt5/QtInstanceTreeView.cxx
+++ b/vcl/qt5/QtInstanceTreeView.cxx
@@ -109,16 +109,6 @@ void 
QtInstanceTreeView::enable_toggle_buttons(weld::ColumnToggleType)
 
 void QtInstanceTreeView::set_clicks_to_toggle(int) { assert(false && "Not 
implemented yet"); }
 
-void QtInstanceTreeView::set_text_emphasis(int nRow, bool bOn, int nCol)
-{
-    return set_text_emphasis(treeIter(nRow), bOn, nCol);
-}
-
-bool QtInstanceTreeView::get_text_emphasis(int nRow, int nCol) const
-{
-    return get_text_emphasis(treeIter(nRow), nCol);
-}
-
 void QtInstanceTreeView::set_text_align(int nRow, TxtAlign eAlign, int nCol)
 {
     return set_text_align(treeIter(nRow), eAlign, nCol);
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 6b4eb35f9e06..8fb32e20659b 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -4406,24 +4406,12 @@ void SalInstanceTreeView::set_text_emphasis(const 
weld::TreeIter& rIter, bool bO
     set_text_emphasis(rVclIter.iter, bOn, col);
 }
 
-void SalInstanceTreeView::set_text_emphasis(int pos, bool bOn, int col)
-{
-    SvTreeListEntry* pEntry = m_xTreeView->GetEntry(nullptr, pos);
-    set_text_emphasis(pEntry, bOn, col);
-}
-
 bool SalInstanceTreeView::get_text_emphasis(const weld::TreeIter& rIter, int 
col) const
 {
     const SalInstanceTreeIter& rVclIter = static_cast<const 
SalInstanceTreeIter&>(rIter);
     return get_text_emphasis(rVclIter.iter, col);
 }
 
-bool SalInstanceTreeView::get_text_emphasis(int pos, int col) const
-{
-    SvTreeListEntry* pEntry = m_xTreeView->GetEntry(nullptr, pos);
-    return get_text_emphasis(pEntry, col);
-}
-
 void SalInstanceTreeView::set_text_align(SvTreeListEntry* pEntry, TxtAlign 
eAlign, int col)
 {
     col = to_internal_model(col);
diff --git a/vcl/source/weld/TreeView.cxx b/vcl/source/weld/TreeView.cxx
index cc0f4741811b..4232fb9d7191 100644
--- a/vcl/source/weld/TreeView.cxx
+++ b/vcl/source/weld/TreeView.cxx
@@ -79,6 +79,20 @@ void weld::TreeView::set_image(int row, const 
css::uno::Reference<css::graphic::
     if (std::unique_ptr<weld::TreeIter> pIter = get_iterator(row))
         set_image(*pIter, rImage, col);
 }
+
+void weld::TreeView::set_text_emphasis(int row, bool bOn, int col)
+{
+    if (std::unique_ptr<weld::TreeIter> pIter = get_iterator(row))
+        set_text_emphasis(*pIter, bOn, col);
+}
+
+bool weld::TreeView::get_text_emphasis(int row, int col) const
+{
+    if (std::unique_ptr<weld::TreeIter> pIter = get_iterator(row))
+        return get_text_emphasis(*pIter, col);
+
+    return false;
+}
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s 
cinkeys+=0=break: */
diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx
index 589a6bf8c6fe..62ff930a7d27 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -14090,16 +14090,6 @@ private:
         return nRet;
     }
 
-    gint get_int(int pos, int col) const
-    {
-        gint nRet(-1);
-        GtkTreeIter iter;
-        if (gtk_tree_model_iter_nth_child(m_pTreeModel, &iter, nullptr, pos))
-            nRet = get_int(iter, col);
-        gtk_tree_model_get(m_pTreeModel, &iter, col, &nRet, -1);
-        return nRet;
-    }
-
     bool get_bool(const GtkTreeIter& iter, int col) const
     {
         gboolean bRet(false);
@@ -14147,13 +14137,6 @@ private:
         m_Setter(m_pTreeModel, const_cast<GtkTreeIter*>(&iter), col, bInt, -1);
     }
 
-    void set(int pos, int col, gint bInt)
-    {
-        GtkTreeIter iter;
-        if (gtk_tree_model_iter_nth_child(m_pTreeModel, &iter, nullptr, pos))
-            set(iter, col, bInt);
-    }
-
     void set(const GtkTreeIter& iter, int col, double fValue)
     {
         m_Setter(m_pTreeModel, const_cast<GtkTreeIter*>(&iter), col, fValue, 
-1);
@@ -15391,19 +15374,6 @@ public:
         set(rGtkIter.iter, m_aWeightMap[col], weight);
     }
 
-    virtual void set_text_emphasis(int pos, bool bOn, int col) override
-    {
-        auto weight = bOn ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL;
-        if (col == -1)
-        {
-            for (const auto& elem : m_aWeightMap)
-                set(pos, elem.second, weight);
-            return;
-        }
-        col = to_internal_model(col);
-        set(pos, m_aWeightMap[col], weight);
-    }
-
     virtual bool get_text_emphasis(const weld::TreeIter& rIter, int col) const 
override
     {
         const GtkInstanceTreeIter& rGtkIter = static_cast<const 
GtkInstanceTreeIter&>(rIter);
@@ -15413,14 +15383,6 @@ public:
         return get_int(rGtkIter.iter, iter->second) == PANGO_WEIGHT_BOLD;
     }
 
-    virtual bool get_text_emphasis(int pos, int col) const override
-    {
-        col = to_internal_model(col);
-        const auto iter = m_aWeightMap.find(col);
-        assert(iter != m_aWeightMap.end());
-        return get_int(pos, iter->second) == PANGO_WEIGHT_BOLD;
-    }
-
     virtual void set_text_align(const weld::TreeIter& rIter, TxtAlign eAlign, 
int col) override
     {
         const GtkInstanceTreeIter& rGtkIter = static_cast<const 
GtkInstanceTreeIter&>(rIter);
commit af5ce2f86d6c00219d2ebeb9302506aac83f8a91
Author:     Michael Weghorn <[email protected]>
AuthorDate: Mon Dec 22 21:47:06 2025 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Tue Dec 23 10:12:20 2025 +0100

    weld: Deduplicate TreeView::set_image implementations
    
    The variants taking an int param can be implemented using
    the variants taking a weld::TreeIter param.
    
    Do so once in the abstract weld::TreeView base class, and drop
    the toolkit-specific implementations.
    
    Also move the method declarations of both variants
    next to each other, so one comment can describe both
    of them.
    
    Change-Id: I8318f4ea28b8664090ce5650e2e9c31d76d7630d
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196135
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <[email protected]>

diff --git a/include/vcl/weld/TreeView.hxx b/include/vcl/weld/TreeView.hxx
index f7ac1215bb1b..34af6ca7feb3 100644
--- a/include/vcl/weld/TreeView.hxx
+++ b/include/vcl/weld/TreeView.hxx
@@ -247,13 +247,18 @@ public:
     virtual TriState get_toggle(const TreeIter& rIter, int col = -1) const = 0;
 
     // col index -1 sets the expander image
-    virtual void set_image(int row, const OUString& rImage, int col = -1) = 0;
+    void set_image(int row, const OUString& rImage, int col = -1);
+    virtual void set_image(const TreeIter& rIter, const OUString& rImage, int 
col = -1) = 0;
     // col index -1 sets the expander image
-    virtual void set_image(int row, VirtualDevice& rImage, int col = -1) = 0;
+    void set_image(int row, VirtualDevice& rImage, int col = -1);
+    virtual void set_image(const TreeIter& rIter, VirtualDevice& rImage, int 
col = -1) = 0;
     // col index -1 sets the expander image
-    virtual void set_image(int row, const 
css::uno::Reference<css::graphic::XGraphic>& rImage,
-                           int col = -1)
+    void set_image(int row, const css::uno::Reference<css::graphic::XGraphic>& 
rImage,
+                   int col = -1);
+    virtual void set_image(const TreeIter& rIter,
+                           const css::uno::Reference<css::graphic::XGraphic>& 
rImage, int col = -1)
         = 0;
+
     virtual void set_text_emphasis(int row, bool bOn, int col) = 0;
     virtual bool get_text_emphasis(int row, int col) const = 0;
     virtual void set_text_align(int row, TxtAlign eAlign, int col) = 0;
@@ -340,15 +345,6 @@ public:
     virtual void set_text_emphasis(const TreeIter& rIter, bool bOn, int col) = 
0;
     virtual bool get_text_emphasis(const TreeIter& rIter, int col) const = 0;
     virtual void set_text_align(const TreeIter& rIter, TxtAlign eAlign, int 
col) = 0;
-
-    // col index -1 sets the expander image
-    virtual void set_image(const TreeIter& rIter, const OUString& rImage, int 
col = -1) = 0;
-    // col index -1 sets the expander image
-    virtual void set_image(const TreeIter& rIter, VirtualDevice& rImage, int 
col = -1) = 0;
-    // col index -1 sets the expander image
-    virtual void set_image(const TreeIter& rIter,
-                           const css::uno::Reference<css::graphic::XGraphic>& 
rImage, int col = -1)
-        = 0;
     virtual void set_font_color(const TreeIter& rIter, const Color& rColor) = 
0;
 
     // scroll to make rIter visible, this will also expand all parent rows of 
rIter as necessary to
diff --git a/vcl/inc/qt5/QtInstanceTreeView.hxx 
b/vcl/inc/qt5/QtInstanceTreeView.hxx
index fa35bca72a47..425380036505 100644
--- a/vcl/inc/qt5/QtInstanceTreeView.hxx
+++ b/vcl/inc/qt5/QtInstanceTreeView.hxx
@@ -52,10 +52,6 @@ public:
 
     virtual void set_clicks_to_toggle(int nToggleBehavior) override;
 
-    virtual void set_image(int nRow, const OUString& rImage, int nCol = -1) 
override;
-    virtual void set_image(int nRow, VirtualDevice& rImage, int nCol = -1) 
override;
-    virtual void set_image(int nRow, const 
css::uno::Reference<css::graphic::XGraphic>& rImage,
-                           int nCol = -1) override;
     virtual void set_text_emphasis(int nRow, bool bOn, int nCol) override;
     virtual bool get_text_emphasis(int nRow, int nCol) const override;
     virtual void set_text_align(int nRow, TxtAlign eAlign, int nCol) override;
diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx
index 13b41fb70192..b3bedc3690a6 100644
--- a/vcl/inc/salvtables.hxx
+++ b/vcl/inc/salvtables.hxx
@@ -1721,13 +1721,6 @@ public:
 
     void set_image(SvTreeListEntry* pEntry, const Image& rImage, int col);
 
-    virtual void set_image(int pos, const OUString& rImage, int col = -1) 
override;
-
-    virtual void set_image(int pos, const 
css::uno::Reference<css::graphic::XGraphic>& rImage,
-                           int col = -1) override;
-
-    virtual void set_image(int pos, VirtualDevice& rImage, int col = -1) 
override;
-
     virtual void set_image(const weld::TreeIter& rIter, const OUString& rImage,
                            int col = -1) override;
 
diff --git a/vcl/qt5/QtInstanceTreeView.cxx b/vcl/qt5/QtInstanceTreeView.cxx
index 88c587642219..bffecce0636a 100644
--- a/vcl/qt5/QtInstanceTreeView.cxx
+++ b/vcl/qt5/QtInstanceTreeView.cxx
@@ -109,23 +109,6 @@ void 
QtInstanceTreeView::enable_toggle_buttons(weld::ColumnToggleType)
 
 void QtInstanceTreeView::set_clicks_to_toggle(int) { assert(false && "Not 
implemented yet"); }
 
-void QtInstanceTreeView::set_image(int nRow, const OUString& rImage, int nCol)
-{
-    set_image(treeIter(nRow), rImage, nCol);
-}
-
-void QtInstanceTreeView::set_image(int nRow, VirtualDevice& rImage, int nCol)
-{
-    set_image(treeIter(nRow), rImage, nCol);
-}
-
-void QtInstanceTreeView::set_image(int nRow,
-                                   const 
css::uno::Reference<css::graphic::XGraphic>& rImage,
-                                   int nCol)
-{
-    set_image(treeIter(nRow), rImage, nCol);
-}
-
 void QtInstanceTreeView::set_text_emphasis(int nRow, bool bOn, int nCol)
 {
     return set_text_emphasis(treeIter(nRow), bOn, nCol);
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 4dce73301719..6b4eb35f9e06 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -4497,23 +4497,6 @@ void SalInstanceTreeView::set_image(SvTreeListEntry* 
pEntry, const Image& rImage
     InvalidateModelEntry(pEntry);
 }
 
-void SalInstanceTreeView::set_image(int pos, const OUString& rImage, int col)
-{
-    set_image(m_xTreeView->GetEntry(nullptr, pos), createImage(rImage), col);
-}
-
-void SalInstanceTreeView::set_image(int pos,
-                                    const 
css::uno::Reference<css::graphic::XGraphic>& rImage,
-                                    int col)
-{
-    set_image(m_xTreeView->GetEntry(nullptr, pos), Image(rImage), col);
-}
-
-void SalInstanceTreeView::set_image(int pos, VirtualDevice& rImage, int col)
-{
-    set_image(m_xTreeView->GetEntry(nullptr, pos), createImage(rImage), col);
-}
-
 void SalInstanceTreeView::set_image(const weld::TreeIter& rIter, const 
OUString& rImage, int col)
 {
     const SalInstanceTreeIter& rVclIter = static_cast<const 
SalInstanceTreeIter&>(rIter);
diff --git a/vcl/source/weld/TreeView.cxx b/vcl/source/weld/TreeView.cxx
index f2661d68e9de..cc0f4741811b 100644
--- a/vcl/source/weld/TreeView.cxx
+++ b/vcl/source/weld/TreeView.cxx
@@ -60,6 +60,25 @@ TriState weld::TreeView::get_toggle(int row, int col) const
 
     return TRISTATE_INDET;
 }
+
+void weld::TreeView::set_image(int row, const OUString& rImage, int col)
+{
+    if (std::unique_ptr<weld::TreeIter> pIter = get_iterator(row))
+        set_image(*pIter, rImage, col);
+}
+
+void weld::TreeView::set_image(int row, VirtualDevice& rImage, int col)
+{
+    if (std::unique_ptr<weld::TreeIter> pIter = get_iterator(row))
+        set_image(*pIter, rImage, col);
+}
+
+void weld::TreeView::set_image(int row, const 
css::uno::Reference<css::graphic::XGraphic>& rImage,
+                               int col)
+{
+    if (std::unique_ptr<weld::TreeIter> pIter = get_iterator(row))
+        set_image(*pIter, rImage, col);
+}
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s 
cinkeys+=0=break: */
diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx
index b72aef36588b..589a6bf8c6fe 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -15472,30 +15472,6 @@ public:
             g_object_unref(pixbuf);
     }
 
-    void set_image(int pos, GdkPixbuf* pixbuf, int col)
-    {
-        GtkTreeIter iter;
-        if (gtk_tree_model_iter_nth_child(m_pTreeModel, &iter, nullptr, pos))
-        {
-            set_image(iter, col, pixbuf);
-        }
-    }
-
-    virtual void set_image(int pos, const 
css::uno::Reference<css::graphic::XGraphic>& rImage, int col) override
-    {
-        set_image(pos, getPixbuf(rImage), col);
-    }
-
-    virtual void set_image(int pos, const OUString& rImage, int col) override
-    {
-        set_image(pos, getPixbuf(rImage), col);
-    }
-
-    virtual void set_image(int pos, VirtualDevice& rImage, int col) override
-    {
-        set_image(pos, getPixbuf(rImage), col);
-    }
-
     virtual void set_image(const weld::TreeIter& rIter, const 
css::uno::Reference<css::graphic::XGraphic>& rImage, int col) override
     {
         const GtkInstanceTreeIter& rGtkIter = static_cast<const 
GtkInstanceTreeIter&>(rIter);

Reply via email to