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