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);
