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

Reply via email to