include/vcl/weld/TreeView.hxx        |   11 ++++++-----
 vcl/inc/jsdialog/jsdialogbuilder.hxx |    4 +---
 vcl/inc/qt5/QtInstanceTreeView.hxx   |    2 --
 vcl/inc/salvtables.hxx               |    4 ----
 vcl/jsdialog/jsdialogbuilder.cxx     |   14 --------------
 vcl/qt5/QtInstanceTreeView.cxx       |   10 ----------
 vcl/source/app/salvtables.cxx        |   12 ------------
 vcl/source/weld/TreeView.cxx         |   14 ++++++++++++++
 vcl/unx/gtk3/gtkinst.cxx             |   29 -----------------------------
 9 files changed, 21 insertions(+), 79 deletions(-)

New commits:
commit c1d79bb41cb48ad23e25a4cbf3ab4ded1e8b65c2
Author:     Michael Weghorn <[email protected]>
AuthorDate: Mon Dec 22 20:29:22 2025 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Tue Dec 23 10:11:53 2025 +0100

    weld: Deduplicate TreeView::get_sensitive 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: If04d827f6093dfbe3c61b32e16903a169ead6a04
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196132
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <[email protected]>

diff --git a/include/vcl/weld/TreeView.hxx b/include/vcl/weld/TreeView.hxx
index 22c776b4a9a4..57256a895080 100644
--- a/include/vcl/weld/TreeView.hxx
+++ b/include/vcl/weld/TreeView.hxx
@@ -234,7 +234,9 @@ public:
     // col index -1 sets all columns
     void set_sensitive(int row, bool bSensitive, int col = -1);
     virtual void set_sensitive(const TreeIter& rIter, bool bSensitive, int col 
= -1) = 0;
-    virtual bool get_sensitive(int row, int col) const = 0;
+
+    bool get_sensitive(int row, int col) const;
+    virtual bool get_sensitive(const TreeIter& rIter, int col) const = 0;
 
     // col index -1 sets the expander toggle, enable_toggle_buttons must have 
been called to create that column
     virtual void set_toggle(int row, TriState eState, int col = -1) = 0;
@@ -331,7 +333,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 bool get_sensitive(const TreeIter& rIter, int col) const = 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;
diff --git a/vcl/inc/qt5/QtInstanceTreeView.hxx 
b/vcl/inc/qt5/QtInstanceTreeView.hxx
index 090c057a480e..db96aa75fda4 100644
--- a/vcl/inc/qt5/QtInstanceTreeView.hxx
+++ b/vcl/inc/qt5/QtInstanceTreeView.hxx
@@ -52,7 +52,6 @@ public:
 
     virtual void set_clicks_to_toggle(int nToggleBehavior) override;
 
-    virtual bool get_sensitive(int nRow, int nCol) const override;
     virtual void set_toggle(int nRow, TriState eState, int nCol = -1) override;
     virtual TriState get_toggle(int nRow, int nCol = -1) const override;
     virtual void set_image(int nRow, const OUString& rImage, int nCol = -1) 
override;
diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx
index 40698cc96162..3bbaa8503290 100644
--- a/vcl/inc/salvtables.hxx
+++ b/vcl/inc/salvtables.hxx
@@ -1684,8 +1684,6 @@ public:
 
     virtual void set_sensitive(const weld::TreeIter& rIter, bool bSensitive, 
int col = -1) override;
 
-    virtual bool get_sensitive(int pos, int col) const override;
-
     virtual bool get_sensitive(const weld::TreeIter& rIter, int col) const 
override;
 
     virtual TriState get_toggle(int pos, int col = -1) const override;
diff --git a/vcl/qt5/QtInstanceTreeView.cxx b/vcl/qt5/QtInstanceTreeView.cxx
index 1aae08ebdef1..b0d635ad03ce 100644
--- a/vcl/qt5/QtInstanceTreeView.cxx
+++ b/vcl/qt5/QtInstanceTreeView.cxx
@@ -109,11 +109,6 @@ void 
QtInstanceTreeView::enable_toggle_buttons(weld::ColumnToggleType)
 
 void QtInstanceTreeView::set_clicks_to_toggle(int) { assert(false && "Not 
implemented yet"); }
 
-bool QtInstanceTreeView::get_sensitive(int nRow, int nCol) const
-{
-    return get_sensitive(treeIter(nRow), nCol);
-}
-
 void QtInstanceTreeView::set_toggle(int nRow, TriState eState, int nCol)
 {
     set_toggle(treeIter(nRow), eState, nCol);
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 26a0613f362d..19ed5b886913 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -4329,12 +4329,6 @@ bool SalInstanceTreeView::get_sensitive(SvTreeListEntry* 
pEntry, int col) const
     return do_get_sensitive(pEntry, col);
 }
 
-bool SalInstanceTreeView::get_sensitive(int pos, int col) const
-{
-    SvTreeListEntry* pEntry = m_xTreeView->GetEntry(nullptr, pos);
-    return get_sensitive(pEntry, col);
-}
-
 void SalInstanceTreeView::set_sensitive(const weld::TreeIter& rIter, bool 
bSensitive, 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 d9612c6319fa..337787703cc8 100644
--- a/vcl/source/weld/TreeView.cxx
+++ b/vcl/source/weld/TreeView.cxx
@@ -38,6 +38,14 @@ void weld::TreeView::set_sensitive(int row, bool bSensitive, 
int col)
     if (std::unique_ptr<weld::TreeIter> pIter = get_iterator(row))
         set_sensitive(*pIter, bSensitive, col);
 }
+
+bool weld::TreeView::get_sensitive(int row, int col) const
+{
+    if (std::unique_ptr<weld::TreeIter> pIter = get_iterator(row))
+        return get_sensitive(*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 cc4fdcf24bb0..8e5047ffef74 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -15467,14 +15467,6 @@ public:
     using GtkInstanceWidget::set_sensitive;
     using GtkInstanceWidget::get_sensitive;
 
-    virtual bool get_sensitive(int pos, int col) const override
-    {
-        col = to_internal_model(col);
-        const auto iter = m_aSensitiveMap.find(col);
-        assert(iter != m_aSensitiveMap.end());
-        return get_bool(pos, iter->second);
-    }
-
     virtual void set_sensitive(const weld::TreeIter& rIter, bool bSensitive, 
int col) override
     {
         const GtkInstanceTreeIter& rGtkIter = static_cast<const 
GtkInstanceTreeIter&>(rIter);
commit 6d1dad568523d4ed216083894ffffe4f51aa0b07
Author:     Michael Weghorn <[email protected]>
AuthorDate: Mon Dec 22 20:23:28 2025 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Tue Dec 23 10:11:46 2025 +0100

    weld: Deduplicate TreeView::set_sensitive implementations
    
    The variant taking an int param can be implemented using
    the variant taking a GtkTreeIter 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, so one comment can describe both
    of them.
    
    Change-Id: I0b73c90f99698cc36c57ff0165a69be97f8ed192
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196131
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <[email protected]>

diff --git a/include/vcl/weld/TreeView.hxx b/include/vcl/weld/TreeView.hxx
index dd47d96f3b24..22c776b4a9a4 100644
--- a/include/vcl/weld/TreeView.hxx
+++ b/include/vcl/weld/TreeView.hxx
@@ -232,8 +232,10 @@ public:
     virtual void set_text(const TreeIter& rIter, const OUString& rStr, int col 
= -1) = 0;
 
     // col index -1 sets all columns
-    virtual void set_sensitive(int row, bool bSensitive, int col = -1) = 0;
+    void set_sensitive(int row, bool bSensitive, int col = -1);
+    virtual void set_sensitive(const TreeIter& rIter, bool bSensitive, int col 
= -1) = 0;
     virtual bool get_sensitive(int row, int col) const = 0;
+
     // col index -1 sets the expander toggle, enable_toggle_buttons must have 
been called to create that column
     virtual void set_toggle(int row, TriState eState, int col = -1) = 0;
     // col index -1 gets the expander toggle, enable_toggle_buttons must have 
been called to create that column
@@ -329,8 +331,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;
-    // col index -1 sets all columns
-    virtual void set_sensitive(const TreeIter& rIter, bool bSensitive, int col 
= -1) = 0;
     virtual bool get_sensitive(const TreeIter& rIter, int col) const = 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;
diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx 
b/vcl/inc/jsdialog/jsdialogbuilder.hxx
index 3609b74a8142..ee2a118148ee 100644
--- a/vcl/inc/jsdialog/jsdialogbuilder.hxx
+++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx
@@ -720,9 +720,7 @@ public:
     virtual void set_toggle(int pos, TriState eState, int col = -1) override;
     virtual void set_toggle(const weld::TreeIter& rIter, TriState bOn, int col 
= -1) override;
 
-    using SalInstanceTreeView::set_sensitive;
-    /// pos is used differently here, it defines how many steps of iterator we 
need to perform to take entry
-    virtual void set_sensitive(int pos, bool bSensitive, int col = -1) 
override;
+    using weld::TreeView::set_sensitive;
     virtual void set_sensitive(const weld::TreeIter& rIter, bool bSensitive, 
int col = -1) override;
 
     virtual void do_select(const weld::TreeIter& rIter) override;
diff --git a/vcl/inc/qt5/QtInstanceTreeView.hxx 
b/vcl/inc/qt5/QtInstanceTreeView.hxx
index 4b2b67d6997a..090c057a480e 100644
--- a/vcl/inc/qt5/QtInstanceTreeView.hxx
+++ b/vcl/inc/qt5/QtInstanceTreeView.hxx
@@ -52,7 +52,6 @@ public:
 
     virtual void set_clicks_to_toggle(int nToggleBehavior) override;
 
-    virtual void set_sensitive(int nRow, bool bSensitive, int nCol = -1) 
override;
     virtual bool get_sensitive(int nRow, int nCol) const override;
     virtual void set_toggle(int nRow, TriState eState, int nCol = -1) override;
     virtual TriState get_toggle(int nRow, int nCol = -1) const override;
diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx
index 7f609bc1ff37..40698cc96162 100644
--- a/vcl/inc/salvtables.hxx
+++ b/vcl/inc/salvtables.hxx
@@ -1682,8 +1682,6 @@ public:
     void set_sensitive(SvTreeListEntry* pEntry, bool bSensitive, int col);
     bool get_sensitive(SvTreeListEntry* pEntry, int col) const;
 
-    virtual void set_sensitive(int pos, bool bSensitive, int col = -1) 
override;
-
     virtual void set_sensitive(const weld::TreeIter& rIter, bool bSensitive, 
int col = -1) override;
 
     virtual bool get_sensitive(int pos, int col) const override;
diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx
index 3a20e671ea84..8b4f0b6bb2e4 100644
--- a/vcl/jsdialog/jsdialogbuilder.cxx
+++ b/vcl/jsdialog/jsdialogbuilder.cxx
@@ -1708,20 +1708,6 @@ void JSTreeView::set_toggle(const weld::TreeIter& rIter, 
TriState bOn, int col)
     sendUpdate();
 }
 
-void JSTreeView::set_sensitive(int pos, bool bSensitive, int col)
-{
-    SvTreeListEntry* pEntry = m_xTreeView->GetEntry(nullptr, 0);
-
-    while (pEntry && pos--)
-        pEntry = m_xTreeView->Next(pEntry);
-
-    if (pEntry)
-    {
-        SalInstanceTreeView::set_sensitive(pEntry, bSensitive, col);
-        sendUpdate();
-    }
-}
-
 void JSTreeView::set_sensitive(const weld::TreeIter& rIter, bool bSensitive, 
int col)
 {
     SalInstanceTreeView::set_sensitive(rIter, bSensitive, col);
diff --git a/vcl/qt5/QtInstanceTreeView.cxx b/vcl/qt5/QtInstanceTreeView.cxx
index 8f020c09cd28..1aae08ebdef1 100644
--- a/vcl/qt5/QtInstanceTreeView.cxx
+++ b/vcl/qt5/QtInstanceTreeView.cxx
@@ -109,11 +109,6 @@ void 
QtInstanceTreeView::enable_toggle_buttons(weld::ColumnToggleType)
 
 void QtInstanceTreeView::set_clicks_to_toggle(int) { assert(false && "Not 
implemented yet"); }
 
-void QtInstanceTreeView::set_sensitive(int nRow, bool bSensitive, int nCol)
-{
-    set_sensitive(treeIter(nRow), bSensitive, nCol);
-}
-
 bool QtInstanceTreeView::get_sensitive(int nRow, int nCol) const
 {
     return get_sensitive(treeIter(nRow), nCol);
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index fca8710d2a7c..26a0613f362d 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -4329,12 +4329,6 @@ bool SalInstanceTreeView::get_sensitive(SvTreeListEntry* 
pEntry, int col) const
     return do_get_sensitive(pEntry, col);
 }
 
-void SalInstanceTreeView::set_sensitive(int pos, bool bSensitive, int col)
-{
-    SvTreeListEntry* pEntry = m_xTreeView->GetEntry(nullptr, pos);
-    set_sensitive(pEntry, bSensitive, col);
-}
-
 bool SalInstanceTreeView::get_sensitive(int pos, int col) const
 {
     SvTreeListEntry* pEntry = m_xTreeView->GetEntry(nullptr, pos);
diff --git a/vcl/source/weld/TreeView.cxx b/vcl/source/weld/TreeView.cxx
index 9c6bf5f3e692..d9612c6319fa 100644
--- a/vcl/source/weld/TreeView.cxx
+++ b/vcl/source/weld/TreeView.cxx
@@ -32,6 +32,12 @@ void weld::TreeView::set_text(int row, const OUString& 
rText, int col)
     if (std::unique_ptr<weld::TreeIter> pIter = get_iterator(row))
         set_text(*pIter, rText, col);
 }
+
+void weld::TreeView::set_sensitive(int row, bool bSensitive, int col)
+{
+    if (std::unique_ptr<weld::TreeIter> pIter = get_iterator(row))
+        set_sensitive(*pIter, bSensitive, 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 80a0a6d8c4f8..cc4fdcf24bb0 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -14151,13 +14151,6 @@ private:
         m_Setter(m_pTreeModel, const_cast<GtkTreeIter*>(&iter), col, 
promote_arg(bOn), -1);
     }
 
-    void set(int pos, int col, bool bOn)
-    {
-        GtkTreeIter iter;
-        if (gtk_tree_model_iter_nth_child(m_pTreeModel, &iter, nullptr, pos))
-            set(iter, col, bOn);
-    }
-
     void set(const GtkTreeIter& iter, int col, gint bInt)
     {
         m_Setter(m_pTreeModel, const_cast<GtkTreeIter*>(&iter), col, bInt, -1);
@@ -15474,20 +15467,6 @@ public:
     using GtkInstanceWidget::set_sensitive;
     using GtkInstanceWidget::get_sensitive;
 
-    virtual void set_sensitive(int pos, bool bSensitive, int col) override
-    {
-        if (col == -1)
-        {
-            for (const auto& elem : m_aSensitiveMap)
-                set(pos, elem.second, bSensitive);
-        }
-        else
-        {
-            col = to_internal_model(col);
-            set(pos, m_aSensitiveMap[col], bSensitive);
-        }
-    }
-
     virtual bool get_sensitive(int pos, int col) const override
     {
         col = to_internal_model(col);

Reply via email to