include/vcl/weld/TreeView.hxx | 12 ++++++------ vcl/inc/jsdialog/jsdialogbuilder.hxx | 4 +--- vcl/inc/qt5/QtInstanceTreeView.hxx | 2 -- vcl/inc/salvtables.hxx | 4 ---- vcl/jsdialog/jsdialogbuilder.cxx | 16 ---------------- vcl/qt5/QtInstanceTreeView.cxx | 10 ---------- vcl/source/app/salvtables.cxx | 12 ------------ vcl/source/weld/TreeView.cxx | 14 ++++++++++++++ vcl/unx/gtk3/gtkinst.cxx | 30 ------------------------------ 9 files changed, 21 insertions(+), 83 deletions(-)
New commits: commit ac2e20379a59ee5e5224da976aae56b29f97b98e Author: Michael Weghorn <[email protected]> AuthorDate: Mon Dec 22 20:53:35 2025 +0100 Commit: Michael Weghorn <[email protected]> CommitDate: Tue Dec 23 10:12:11 2025 +0100 weld: Deduplicate TreeView::get_toggle 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, so one comment can describe both of them. Change-Id: Id858f36c1efe13b43abb2cad70611c2a9e166a1a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196134 Tested-by: Jenkins Reviewed-by: Michael Weghorn <[email protected]> diff --git a/include/vcl/weld/TreeView.hxx b/include/vcl/weld/TreeView.hxx index 6f09f88508ed..f7ac1215bb1b 100644 --- a/include/vcl/weld/TreeView.hxx +++ b/include/vcl/weld/TreeView.hxx @@ -243,7 +243,9 @@ public: virtual void set_toggle(const TreeIter& rIter, TriState bOn, int col = -1) = 0; // col index -1 gets the expander toggle, enable_toggle_buttons must have been called to create that column - virtual TriState get_toggle(int row, int col = -1) const = 0; + TriState get_toggle(int row, int col = -1) const; + 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; // col index -1 sets the expander image @@ -339,9 +341,6 @@ public: 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 gets the expander toggle, enable_toggle_buttons must have been called to create that column - virtual TriState get_toggle(const TreeIter& rIter, int col = -1) const = 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 diff --git a/vcl/inc/qt5/QtInstanceTreeView.hxx b/vcl/inc/qt5/QtInstanceTreeView.hxx index 5c9f5a424c11..fa35bca72a47 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 TriState get_toggle(int nRow, int nCol = -1) const 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, diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx index 9cb02b9df797..13b41fb70192 100644 --- a/vcl/inc/salvtables.hxx +++ b/vcl/inc/salvtables.hxx @@ -1686,8 +1686,6 @@ public: virtual bool get_sensitive(const weld::TreeIter& rIter, int col) const override; - virtual TriState get_toggle(int pos, int col = -1) const override; - virtual TriState get_toggle(const weld::TreeIter& rIter, int col = -1) const override; virtual void enable_toggle_buttons(weld::ColumnToggleType eType) override; diff --git a/vcl/qt5/QtInstanceTreeView.cxx b/vcl/qt5/QtInstanceTreeView.cxx index 0ec6de7899fd..88c587642219 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"); } -TriState QtInstanceTreeView::get_toggle(int nRow, int nCol) const -{ - return get_toggle(treeIter(nRow), nCol); -} - void QtInstanceTreeView::set_image(int nRow, const OUString& rImage, int nCol) { set_image(treeIter(nRow), rImage, nCol); diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index 8b7e127c17d6..4dce73301719 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -4341,12 +4341,6 @@ bool SalInstanceTreeView::get_sensitive(const weld::TreeIter& rIter, int col) co return get_sensitive(rVclIter.iter, col); } -TriState SalInstanceTreeView::get_toggle(int pos, int col) const -{ - SvTreeListEntry* pEntry = m_xTreeView->GetEntry(nullptr, pos); - return get_toggle(pEntry, col); -} - TriState SalInstanceTreeView::get_toggle(const weld::TreeIter& rIter, int col) const { const SalInstanceTreeIter& rVclIter = static_cast<const SalInstanceTreeIter&>(rIter); diff --git a/vcl/source/weld/TreeView.cxx b/vcl/source/weld/TreeView.cxx index 10b6b221a1e1..f2661d68e9de 100644 --- a/vcl/source/weld/TreeView.cxx +++ b/vcl/source/weld/TreeView.cxx @@ -52,6 +52,14 @@ void weld::TreeView::set_toggle(int row, TriState eState, int col) if (std::unique_ptr<weld::TreeIter> pIter = get_iterator(row)) set_toggle(*pIter, eState, col); } + +TriState weld::TreeView::get_toggle(int row, int col) const +{ + if (std::unique_ptr<weld::TreeIter> pIter = get_iterator(row)) + return get_toggle(*pIter, col); + + return TRISTATE_INDET; +} } /* 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 b8af1823d54c..b72aef36588b 100644 --- a/vcl/unx/gtk3/gtkinst.cxx +++ b/vcl/unx/gtk3/gtkinst.cxx @@ -14107,15 +14107,6 @@ private: return bRet; } - bool get_bool(int pos, int col) const - { - bool bRet(false); - GtkTreeIter iter; - if (gtk_tree_model_iter_nth_child(m_pTreeModel, &iter, nullptr, pos)) - bRet = get_bool(iter, col); - return bRet; - } - void set_toggle(const GtkTreeIter& iter, TriState eState, int col) { if (col == -1) @@ -15337,20 +15328,6 @@ public: return gtk_tree_selection_iter_is_selected(gtk_tree_view_get_selection(m_pTreeView), const_cast<GtkTreeIter*>(&rGtkIter.iter)); } - virtual TriState get_toggle(int pos, int col) const override - { - if (col == -1) - col = m_nExpanderToggleCol; - else - col = to_internal_model(col); - - const auto iter = m_aToggleTriStateMap.find(col); - assert(iter != m_aToggleTriStateMap.end()); - if (get_bool(pos, iter->second)) - return TRISTATE_INDET; - return get_bool(pos, col) ? TRISTATE_TRUE : TRISTATE_FALSE; - } - virtual TriState get_toggle(const weld::TreeIter& rIter, int col) const override { if (col == -1) commit 230a8816f038fece36fb9f1e0e1ac13c2ab471e8 Author: Michael Weghorn <[email protected]> AuthorDate: Mon Dec 22 20:46:56 2025 +0100 Commit: Michael Weghorn <[email protected]> CommitDate: Tue Dec 23 10:12:02 2025 +0100 weld: Deduplicate TreeView::set_toggle 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, so one comment can describe both of them. Change-Id: I7864ac48c08d3abb73b3b1f43a53f604e338bcf5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196133 Reviewed-by: Michael Weghorn <[email protected]> Tested-by: Jenkins diff --git a/include/vcl/weld/TreeView.hxx b/include/vcl/weld/TreeView.hxx index 57256a895080..6f09f88508ed 100644 --- a/include/vcl/weld/TreeView.hxx +++ b/include/vcl/weld/TreeView.hxx @@ -239,7 +239,9 @@ public: 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; + void set_toggle(int row, TriState eState, int col = -1); + virtual void set_toggle(const TreeIter& rIter, TriState bOn, int col = -1) = 0; + // col index -1 gets the expander toggle, enable_toggle_buttons must have been called to create that column virtual TriState get_toggle(int row, int col = -1) const = 0; // col index -1 sets the expander image @@ -336,8 +338,7 @@ 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 toggle, enable_toggle_buttons must have been called to create that column - virtual void set_toggle(const TreeIter& rIter, TriState bOn, int col = -1) = 0; + // col index -1 gets the expander toggle, enable_toggle_buttons must have been called to create that column virtual TriState get_toggle(const TreeIter& rIter, int col = -1) const = 0; diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx b/vcl/inc/jsdialog/jsdialogbuilder.hxx index ee2a118148ee..209fd4ede7ed 100644 --- a/vcl/inc/jsdialog/jsdialogbuilder.hxx +++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx @@ -715,9 +715,7 @@ public: JSTreeView(JSDialogSender* pSender, ::SvTabListBox* pTextView, SalInstanceBuilder* pBuilder, bool bTakeOwnership); - using SalInstanceTreeView::set_toggle; - /// pos is used differently here, it defines how many steps of iterator we need to perform to take entry - virtual void set_toggle(int pos, TriState eState, int col = -1) override; + using weld::TreeView::set_toggle; virtual void set_toggle(const weld::TreeIter& rIter, TriState bOn, int col = -1) override; using weld::TreeView::set_sensitive; diff --git a/vcl/inc/qt5/QtInstanceTreeView.hxx b/vcl/inc/qt5/QtInstanceTreeView.hxx index db96aa75fda4..5c9f5a424c11 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_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; virtual void set_image(int nRow, VirtualDevice& rImage, int nCol = -1) override; diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx index 3bbaa8503290..9cb02b9df797 100644 --- a/vcl/inc/salvtables.hxx +++ b/vcl/inc/salvtables.hxx @@ -1692,8 +1692,6 @@ public: virtual void enable_toggle_buttons(weld::ColumnToggleType eType) override; - virtual void set_toggle(int pos, TriState eState, int col = -1) override; - virtual void set_toggle(const weld::TreeIter& rIter, TriState eState, int col = -1) override; virtual void set_clicks_to_toggle(int nToggleBehavior) override; diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx index 8b4f0b6bb2e4..ee28d30450db 100644 --- a/vcl/jsdialog/jsdialogbuilder.cxx +++ b/vcl/jsdialog/jsdialogbuilder.cxx @@ -1686,22 +1686,6 @@ JSTreeView::JSTreeView(JSDialogSender* pSender, ::SvTabListBox* pTreeView, { } -void JSTreeView::set_toggle(int pos, TriState eState, int col) -{ - SvTreeListEntry* pEntry = m_xTreeView->GetEntry(nullptr, 0); - - while (pEntry && pos--) - pEntry = m_xTreeView->Next(pEntry); - - if (pEntry) - { - SalInstanceTreeView::set_toggle(pEntry, eState, col); - signal_toggled(iter_col(SalInstanceTreeIter(pEntry), col)); - - sendUpdate(); - } -} - void JSTreeView::set_toggle(const weld::TreeIter& rIter, TriState bOn, int col) { SalInstanceTreeView::set_toggle(rIter, bOn, col); diff --git a/vcl/qt5/QtInstanceTreeView.cxx b/vcl/qt5/QtInstanceTreeView.cxx index b0d635ad03ce..0ec6de7899fd 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_toggle(int nRow, TriState eState, int nCol) -{ - set_toggle(treeIter(nRow), eState, nCol); -} - TriState QtInstanceTreeView::get_toggle(int nRow, int nCol) const { return get_toggle(treeIter(nRow), nCol); diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index 19ed5b886913..8b7e127c17d6 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -4364,12 +4364,6 @@ void SalInstanceTreeView::enable_toggle_buttons(weld::ColumnToggleType eType) rData.SetLink(LINK(this, SalInstanceTreeView, ToggleHdl)); } -void SalInstanceTreeView::set_toggle(int pos, TriState eState, int col) -{ - SvTreeListEntry* pEntry = m_xTreeView->GetEntry(nullptr, pos); - set_toggle(pEntry, eState, col); -} - void SalInstanceTreeView::set_toggle(const weld::TreeIter& rIter, TriState eState, 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 337787703cc8..10b6b221a1e1 100644 --- a/vcl/source/weld/TreeView.cxx +++ b/vcl/source/weld/TreeView.cxx @@ -46,6 +46,12 @@ bool weld::TreeView::get_sensitive(int row, int col) const return false; } + +void weld::TreeView::set_toggle(int row, TriState eState, int col) +{ + if (std::unique_ptr<weld::TreeIter> pIter = get_iterator(row)) + set_toggle(*pIter, eState, 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 8e5047ffef74..b8af1823d54c 100644 --- a/vcl/unx/gtk3/gtkinst.cxx +++ b/vcl/unx/gtk3/gtkinst.cxx @@ -15372,13 +15372,6 @@ public: set_toggle(rGtkIter.iter, eState, col); } - virtual void set_toggle(int pos, TriState eState, int col) override - { - GtkTreeIter iter; - if (gtk_tree_model_iter_nth_child(m_pTreeModel, &iter, nullptr, pos)) - set_toggle(iter, eState, col); - } - virtual void enable_toggle_buttons(weld::ColumnToggleType eType) override { for (GList* pEntry = g_list_first(m_pColumns); pEntry; pEntry = g_list_next(pEntry))
