include/vcl/weld/IconView.hxx | 4 -- include/vcl/weld/ItemView.hxx | 3 + include/vcl/weld/TreeView.hxx | 2 - vcl/inc/salvtables.hxx | 18 +++------- vcl/source/app/salvtables.cxx | 69 ++++++++++++++---------------------------- 5 files changed, 32 insertions(+), 64 deletions(-)
New commits: commit 0dff8d3ba9a0a5408ebf47789545ebca1e6559f3 Author: Michael Weghorn <[email protected]> AuthorDate: Sat Dec 20 02:06:23 2025 +0100 Commit: Michael Weghorn <[email protected]> CommitDate: Sat Dec 20 06:48:10 2025 +0100 vcl weld: Deduplicate weld::ItemView::get_id implementations SalInstanceTreeView and SalInstanceIconView implement the same logic, including the helper method. Deduplicate this by moving it to the common base class. Change-Id: I4fcc8a2f7188f6922a42f7d3471253bd73137038 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195947 Reviewed-by: Michael Weghorn <[email protected]> Tested-by: Jenkins diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx index 3fc07ec50f5b..f47682ca12da 100644 --- a/vcl/inc/salvtables.hxx +++ b/vcl/inc/salvtables.hxx @@ -1517,10 +1517,16 @@ public: virtual std::unique_ptr<weld::TreeIter> get_iterator(int nPos) const override; + virtual OUString get_id(int pos) const override; + virtual OUString get_id(const weld::TreeIter& rIter) const override; + virtual OUString get_selected_id() const override; virtual OUString get_selected_text() const override; virtual int n_children() const override; + +private: + const OUString* getEntryData(int index) const; }; class SalInstanceTreeView : public SalInstanceItemView, public virtual weld::TreeView @@ -1740,10 +1746,6 @@ public: virtual void set_image(const weld::TreeIter& rIter, VirtualDevice& rImage, int col = -1) override; - const OUString* getEntryData(int index) const; - - virtual OUString get_id(int pos) const override; - void set_id(SvTreeListEntry* pEntry, const OUString& rId); virtual void set_id(int pos, const OUString& rId) override; @@ -1798,8 +1800,6 @@ public: virtual void set_text(const weld::TreeIter& rIter, const OUString& rText, int col = -1) override; - virtual OUString get_id(const weld::TreeIter& rIter) const override; - virtual void set_id(const weld::TreeIter& rIter, const OUString& rId) override; virtual void enable_drag_source(rtl::Reference<TransferDataContainer>& rHelper, @@ -1948,14 +1948,8 @@ public: virtual void selected_foreach(const std::function<bool(weld::TreeIter&)>& func) override; - virtual OUString get_id(const weld::TreeIter& rIter) const override; - - virtual OUString get_id(int pos) const override; - virtual void do_remove(int pos) override; - const OUString* getEntryData(int index) const; - virtual void set_image(int pos, VirtualDevice& rImage) override; virtual void set_text(int pos, const OUString& rText) override; diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index f63b78b040dd..5f50eaab6a74 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -3552,6 +3552,29 @@ std::unique_ptr<weld::TreeIter> SalInstanceItemView::get_iterator(int nPos) cons return {}; } +const OUString* SalInstanceItemView::getEntryData(int index) const +{ + SvTreeListEntry* pEntry = m_pTreeListBox->GetEntry(nullptr, index); + return pEntry ? static_cast<const OUString*>(pEntry->GetUserData()) : nullptr; +} + +OUString SalInstanceItemView::get_id(int pos) const +{ + const OUString* pRet = getEntryData(pos); + if (!pRet) + return OUString(); + return *pRet; +} + +OUString SalInstanceItemView::get_id(const weld::TreeIter& rIter) const +{ + const SalInstanceTreeIter& rVclIter = static_cast<const SalInstanceTreeIter&>(rIter); + const OUString* pStr = static_cast<const OUString*>(rVclIter.iter->GetUserData()); + if (pStr) + return *pStr; + return OUString(); +} + OUString SalInstanceItemView::get_selected_id() const { assert(m_pTreeListBox->IsUpdateMode() && "don't request selection when frozen"); @@ -4538,20 +4561,6 @@ void SalInstanceTreeView::set_image(const weld::TreeIter& rIter, VirtualDevice& set_image(rVclIter.iter, createImage(rImage), col); } -const OUString* SalInstanceTreeView::getEntryData(int index) const -{ - SvTreeListEntry* pEntry = m_xTreeView->GetEntry(nullptr, index); - return pEntry ? static_cast<const OUString*>(pEntry->GetUserData()) : nullptr; -} - -OUString SalInstanceTreeView::get_id(int pos) const -{ - const OUString* pRet = getEntryData(pos); - if (!pRet) - return OUString(); - return *pRet; -} - void SalInstanceTreeView::set_id(SvTreeListEntry* pEntry, const OUString& rId) { m_aUserData.emplace_back(std::make_unique<OUString>(rId)); @@ -4751,15 +4760,6 @@ void SalInstanceTreeView::set_text(const weld::TreeIter& rIter, const OUString& set_text(rVclIter.iter, rText, col); } -OUString SalInstanceTreeView::get_id(const weld::TreeIter& rIter) const -{ - const SalInstanceTreeIter& rVclIter = static_cast<const SalInstanceTreeIter&>(rIter); - const OUString* pStr = static_cast<const OUString*>(rVclIter.iter->GetUserData()); - if (pStr) - return *pStr; - return OUString(); -} - void SalInstanceTreeView::set_id(const weld::TreeIter& rIter, const OUString& rId) { const SalInstanceTreeIter& rVclIter = static_cast<const SalInstanceTreeIter&>(rIter); @@ -5429,23 +5429,6 @@ void SalInstanceIconView::selected_foreach(const std::function<bool(weld::TreeIt } } -OUString SalInstanceIconView::get_id(const weld::TreeIter& rIter) const -{ - const SalInstanceTreeIter& rVclIter = static_cast<const SalInstanceTreeIter&>(rIter); - const OUString* pStr = static_cast<const OUString*>(rVclIter.iter->GetUserData()); - if (pStr) - return *pStr; - return OUString(); -} - -OUString SalInstanceIconView::get_id(int pos) const -{ - const OUString* pRet = getEntryData(pos); - if (!pRet) - return OUString(); - return *pRet; -} - void SalInstanceIconView::set_image(int pos, VirtualDevice& rIcon) { SvTreeListEntry* aEntry = m_xIconView->GetEntry(nullptr, pos); @@ -5475,12 +5458,6 @@ void SalInstanceIconView::do_remove(int pos) m_xIconView->RemoveEntry(pEntry); } -const OUString* SalInstanceIconView::getEntryData(int index) const -{ - SvTreeListEntry* pEntry = m_xIconView->GetEntry(nullptr, index); - return pEntry ? static_cast<const OUString*>(pEntry->GetUserData()) : nullptr; -} - OUString SalInstanceIconView::get_text(const weld::TreeIter& rIter) const { const SalInstanceTreeIter& rVclIter = static_cast<const SalInstanceTreeIter&>(rIter); commit e619ab5664670ec5c2ec0b9f07d6ff3100427f9e Author: Michael Weghorn <[email protected]> AuthorDate: Sat Dec 20 01:54:05 2025 +0100 Commit: Michael Weghorn <[email protected]> CommitDate: Sat Dec 20 06:48:03 2025 +0100 weld: Move get_id() to weld::ItemView base Both, weld::TreeView and weld::IconView have those purely virtual methods. Move them to the common base class. Change-Id: I0a88622bb9cf74e89b20cbf6aef47f8ca6644c2e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195946 Tested-by: Jenkins Reviewed-by: Michael Weghorn <[email protected]> diff --git a/include/vcl/weld/IconView.hxx b/include/vcl/weld/IconView.hxx index 9647ab20756e..a22650769c20 100644 --- a/include/vcl/weld/IconView.hxx +++ b/include/vcl/weld/IconView.hxx @@ -116,9 +116,6 @@ public: virtual int count_selected_items() const = 0; - //by index. Don't select when frozen, select after thaw. Note selection doesn't survive a freeze. - virtual OUString get_id(int pos) const = 0; - virtual void set_image(int pos, VirtualDevice& rDevice) = 0; virtual void set_text(int pos, const OUString& rText) = 0; virtual void set_id(int pos, const OUString& rId) = 0; @@ -137,7 +134,6 @@ public: std::unique_ptr<weld::TreeIter> get_item_at_pos(const Point& rPos); - virtual OUString get_id(const TreeIter& rIter) const = 0; virtual OUString get_text(const TreeIter& rIter) const = 0; void scroll_to_item(const TreeIter& rIter) diff --git a/include/vcl/weld/ItemView.hxx b/include/vcl/weld/ItemView.hxx index 37f4db46ca65..11193c9ab16d 100644 --- a/include/vcl/weld/ItemView.hxx +++ b/include/vcl/weld/ItemView.hxx @@ -41,6 +41,9 @@ public: virtual std::unique_ptr<TreeIter> get_iterator(int nPos) const = 0; + virtual OUString get_id(int pos) const = 0; + virtual OUString get_id(const TreeIter& rIter) const = 0; + virtual OUString get_selected_id() const = 0; virtual OUString get_selected_text() const = 0; diff --git a/include/vcl/weld/TreeView.hxx b/include/vcl/weld/TreeView.hxx index 0fb38cc095ae..6e8eba86489b 100644 --- a/include/vcl/weld/TreeView.hxx +++ b/include/vcl/weld/TreeView.hxx @@ -296,7 +296,6 @@ public: } //by id - virtual OUString get_id(int pos) const = 0; virtual int find_id(const OUString& rId) const = 0; //Don't select when frozen, select after thaw. Note selection doesn't survive a freeze. void select_id(const OUString& rId) { select(find_id(rId)); } @@ -361,7 +360,6 @@ public: // col index -1 gets the first text column virtual OUString get_text(const TreeIter& rIter, int col = -1) const = 0; virtual void set_id(const TreeIter& rIter, const OUString& rId) = 0; - virtual OUString get_id(const TreeIter& rIter) 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
