vcl/inc/qt5/QtInstanceIconView.hxx |    2 --
 vcl/inc/qt5/QtInstanceItemView.hxx |    3 +++
 vcl/inc/qt5/QtInstanceTreeView.hxx |    2 --
 vcl/inc/salvtables.hxx             |   10 ++++------
 vcl/qt5/QtInstanceIconView.cxx     |    6 ------
 vcl/qt5/QtInstanceItemView.cxx     |    6 ++++++
 vcl/qt5/QtInstanceTreeView.cxx     |    6 ------
 vcl/source/app/salvtables.cxx      |   21 +++++++--------------
 vcl/unx/gtk3/gtkinst.cxx           |   34 ++++++++++++++++++++--------------
 9 files changed, 40 insertions(+), 50 deletions(-)

New commits:
commit dd9b506bb3417bd3635b0c564d9658b0c714982c
Author:     Michael Weghorn <[email protected]>
AuthorDate: Wed Dec 17 16:25:35 2025 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Thu Dec 18 07:20:58 2025 +0100

    tdf#130857 qt weld: Move weld::ItemView::make_iterator impl to base
    
    Following
    
        Change-Id: I6f35e2cac1c2f1851590307699631c2b9598f9eb
        Author: Michael Weghorn <[email protected]>
        Date:   Wed Dec 17 15:24:33 2025 +0100
    
            vcl weld: Introduce SalInstanceItemView
    
    , move the existing QtInstanceTreeView implementation to the
    new QtInstanceItemView base class.
    
    The same logic is fine for QtInstanceIconView as well, so
    this avoids having to reimplement it there.
    
    Change-Id: I041225fbb5812d0db259f711c6ce4f9463cdb47f
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195800
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <[email protected]>

diff --git a/vcl/inc/qt5/QtInstanceIconView.hxx 
b/vcl/inc/qt5/QtInstanceIconView.hxx
index 8dbe5159d24a..925e5ba94454 100644
--- a/vcl/inc/qt5/QtInstanceIconView.hxx
+++ b/vcl/inc/qt5/QtInstanceIconView.hxx
@@ -55,8 +55,6 @@ public:
     virtual void do_remove(int pos) override;
     virtual tools::Rectangle get_rect(int pos) const override;
 
-    virtual std::unique_ptr<weld::TreeIter> make_iterator(const 
weld::TreeIter* pOrig
-                                                          = nullptr) const 
override;
     virtual bool get_selected(weld::TreeIter* pIter) const override;
     virtual bool get_cursor(weld::TreeIter* pIter) const override;
     virtual void do_set_cursor(const weld::TreeIter& rIter) override;
diff --git a/vcl/inc/qt5/QtInstanceItemView.hxx 
b/vcl/inc/qt5/QtInstanceItemView.hxx
index 2644762acbca..927ce329d259 100644
--- a/vcl/inc/qt5/QtInstanceItemView.hxx
+++ b/vcl/inc/qt5/QtInstanceItemView.hxx
@@ -29,6 +29,9 @@ protected:
 public:
     QtInstanceItemView(QAbstractItemView* pItemView, QAbstractItemModel& 
rModel);
 
+    virtual std::unique_ptr<weld::TreeIter> make_iterator(const 
weld::TreeIter* pOrig
+                                                          = nullptr) const 
override;
+
 protected:
     QModelIndex modelIndex(int nRow, int nCol = 0,
                            const QModelIndex& rParentIndex = QModelIndex()) 
const;
diff --git a/vcl/inc/qt5/QtInstanceTreeView.hxx 
b/vcl/inc/qt5/QtInstanceTreeView.hxx
index d0fcefbbc16f..047ebe09eb19 100644
--- a/vcl/inc/qt5/QtInstanceTreeView.hxx
+++ b/vcl/inc/qt5/QtInstanceTreeView.hxx
@@ -85,8 +85,6 @@ public:
     virtual OUString get_id(int nPos) const override;
     virtual int find_id(const OUString& rId) const override;
 
-    virtual std::unique_ptr<weld::TreeIter> make_iterator(const 
weld::TreeIter* pOrig
-                                                          = nullptr) const 
override;
     virtual void copy_iterator(const weld::TreeIter& rSource, weld::TreeIter& 
rDest) const override;
     virtual bool get_selected(weld::TreeIter* pIter) const override;
     virtual bool get_cursor(weld::TreeIter* pIter) const override;
diff --git a/vcl/qt5/QtInstanceIconView.cxx b/vcl/qt5/QtInstanceIconView.cxx
index f8f617364a5e..66dc3220ca04 100644
--- a/vcl/qt5/QtInstanceIconView.cxx
+++ b/vcl/qt5/QtInstanceIconView.cxx
@@ -208,12 +208,6 @@ tools::Rectangle QtInstanceIconView::get_rect(int) const
     return tools::Rectangle();
 }
 
-std::unique_ptr<weld::TreeIter> QtInstanceIconView::make_iterator(const 
weld::TreeIter*) const
-{
-    assert(false && "Not implemented yet");
-    return nullptr;
-}
-
 bool QtInstanceIconView::get_selected(weld::TreeIter*) const
 {
     assert(false && "Not implemented yet");
diff --git a/vcl/qt5/QtInstanceItemView.cxx b/vcl/qt5/QtInstanceItemView.cxx
index 22bdc7d2f875..fa19b30bc10b 100644
--- a/vcl/qt5/QtInstanceItemView.cxx
+++ b/vcl/qt5/QtInstanceItemView.cxx
@@ -16,6 +16,12 @@ QtInstanceItemView::QtInstanceItemView(QAbstractItemView* 
pItemView, QAbstractIt
 {
 }
 
+std::unique_ptr<weld::TreeIter> QtInstanceItemView::make_iterator(const 
weld::TreeIter* pOrig) const
+{
+    const QModelIndex aIndex = pOrig ? modelIndex(*pOrig) : QModelIndex();
+    return std::make_unique<QtInstanceTreeIter>(aIndex);
+}
+
 void QtInstanceItemView::do_clear()
 {
     SolarMutexGuard g;
diff --git a/vcl/qt5/QtInstanceTreeView.cxx b/vcl/qt5/QtInstanceTreeView.cxx
index 36ad49803d03..3ade720c793f 100644
--- a/vcl/qt5/QtInstanceTreeView.cxx
+++ b/vcl/qt5/QtInstanceTreeView.cxx
@@ -335,12 +335,6 @@ int QtInstanceTreeView::find_id(const OUString& rId) const
     return nIndex;
 }
 
-std::unique_ptr<weld::TreeIter> QtInstanceTreeView::make_iterator(const 
weld::TreeIter* pOrig) const
-{
-    const QModelIndex aIndex = pOrig ? modelIndex(*pOrig) : QModelIndex();
-    return std::make_unique<QtInstanceTreeIter>(aIndex);
-}
-
 void QtInstanceTreeView::copy_iterator(const weld::TreeIter& rSource, 
weld::TreeIter& rDest) const
 {
     const QModelIndex aModelIndex = static_cast<const 
QtInstanceTreeIter&>(rSource).modelIndex();
commit 4ddbc72d9246f741c150e8298c4f17a19316c9b9
Author:     Michael Weghorn <[email protected]>
AuthorDate: Wed Dec 17 15:47:00 2025 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Thu Dec 18 07:20:52 2025 +0100

    gtk weld: Introduce GtkInstanceItemView
    
    This is the implementation for the abstract
    weld::ItemView class introduced in
    
        commit 94aee0cd3d6cfc2bdc8375f9e1938a92c15eae1f
        Author: Michael Weghorn <[email protected]>
        Date:   Wed Dec 17 12:14:41 2025 +0100
    
            weld: Introduce weld::ItemView as IconView/TreeView base
    
    Having an equivalent for the GTK-based weld implementation
    will allow sharing code between GtkInstanceIconView
    and GtkInstanceTreeView.
    
    In an initial step, deduplicate the weld::ItemView::make_iterator
    implementations by implementing that method in the new base class
    and dropping the two equivalent subclass overrides.
    
    Change-Id: Id3f87567fc418e6b69eaf92b5b31a7e9ef59814b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195799
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <[email protected]>

diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx
index 2e285d229636..9edda284a070 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -13865,7 +13865,23 @@ int promote_arg(bool bArg)
     return static_cast<int>(bArg);
 }
 
-class GtkInstanceTreeView : public GtkInstanceWidget, public virtual 
weld::TreeView
+class GtkInstanceItemView : public GtkInstanceWidget, public virtual 
weld::ItemView
+{
+public:
+    GtkInstanceItemView(GtkWidget* pWidget, GtkInstanceBuilder* pBuilder, bool 
bTakeOwnership)
+        : GtkInstanceWidget(pWidget, pBuilder, bTakeOwnership)
+    {
+    }
+
+    virtual std::unique_ptr<weld::TreeIter>
+    make_iterator(const weld::TreeIter* pOrig) const override
+    {
+        return std::unique_ptr<weld::TreeIter>(
+            new GtkInstanceTreeIter(static_cast<const 
GtkInstanceTreeIter*>(pOrig)));
+    }
+};
+
+class GtkInstanceTreeView : public GtkInstanceItemView, public virtual 
weld::TreeView
 {
 private:
     GtkTreeView* m_pTreeView;
@@ -14624,7 +14640,7 @@ private:
 
 public:
     GtkInstanceTreeView(GtkTreeView* pTreeView, GtkInstanceBuilder* pBuilder, 
bool bTakeOwnership)
-        : GtkInstanceWidget(GTK_WIDGET(pTreeView), pBuilder, bTakeOwnership)
+        : GtkInstanceItemView(GTK_WIDGET(pTreeView), pBuilder, bTakeOwnership)
         , m_pTreeView(pTreeView)
         , m_pTreeModel(gtk_tree_view_get_model(m_pTreeView))
         , m_bWorkAroundBadDragRegion(false)
@@ -15753,11 +15769,6 @@ public:
         return OUString();
     }
 
-    virtual std::unique_ptr<weld::TreeIter> make_iterator(const 
weld::TreeIter* pOrig) const override
-    {
-        return std::unique_ptr<weld::TreeIter>(new 
GtkInstanceTreeIter(static_cast<const GtkInstanceTreeIter*>(pOrig)));
-    }
-
     virtual void copy_iterator(const weld::TreeIter& rSource, weld::TreeIter& 
rDest) const override
     {
         const GtkInstanceTreeIter& rGtkSource(static_cast<const 
GtkInstanceTreeIter&>(rSource));
@@ -16703,7 +16714,7 @@ IMPL_LINK_NOARG(GtkInstanceTreeView, 
async_stop_cell_editing, void*, void)
 
 namespace {
 
-class GtkInstanceIconView : public GtkInstanceWidget, public virtual 
weld::IconView
+class GtkInstanceIconView : public GtkInstanceItemView, public virtual 
weld::IconView
 {
 private:
     GtkIconView* m_pIconView;
@@ -16961,7 +16972,7 @@ private:
 
 public:
     GtkInstanceIconView(GtkIconView* pIconView, GtkInstanceBuilder* pBuilder, 
bool bTakeOwnership)
-        : GtkInstanceWidget(GTK_WIDGET(pIconView), pBuilder, bTakeOwnership)
+        : GtkInstanceItemView(GTK_WIDGET(pIconView), pBuilder, bTakeOwnership)
         , m_pIconView(pIconView)
         , m_pTreeStore(GTK_TREE_STORE(gtk_icon_view_get_model(m_pIconView)))
         , m_nTextCol(gtk_icon_view_get_text_column(m_pIconView)) // May be -1
@@ -17220,11 +17231,6 @@ public:
         enable_notify_events();
     }
 
-    virtual std::unique_ptr<weld::TreeIter> make_iterator(const 
weld::TreeIter* pOrig) const override
-    {
-        return std::unique_ptr<weld::TreeIter>(new 
GtkInstanceTreeIter(static_cast<const GtkInstanceTreeIter*>(pOrig)));
-    }
-
     virtual void selected_foreach(const std::function<bool(weld::TreeIter&)>& 
func) override
     {
         GtkInstanceTreeIter aGtkIter(nullptr);
commit 8374381bcf5a483738b53738c818413664f6694a
Author:     Michael Weghorn <[email protected]>
AuthorDate: Wed Dec 17 15:38:10 2025 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Thu Dec 18 07:20:44 2025 +0100

    vcl weld: Deduplicate weld::ItemView::make_iterator implementations
    
    Following
    
        Change-Id: I6f35e2cac1c2f1851590307699631c2b9598f9eb
        Author: Michael Weghorn <[email protected]>
        Date:   Wed Dec 17 15:24:33 2025 +0100
    
            vcl weld: Introduce SalInstanceItemView
    
    , move the implementation to the new SalInstanceItemView
    base class instead of having the same logic implemented
    in both subclasses.
    
    Change-Id: I4813a0e62794dc538bdf6300845586d0e8128e15
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195798
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <[email protected]>

diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx
index c22a9b3cc7c5..bcbc43485956 100644
--- a/vcl/inc/salvtables.hxx
+++ b/vcl/inc/salvtables.hxx
@@ -1494,6 +1494,10 @@ protected:
                         bool bTakeOwnership);
 
     virtual void do_clear() override;
+
+public:
+    virtual std::unique_ptr<weld::TreeIter> make_iterator(const 
weld::TreeIter* pOrig
+                                                          = nullptr) const 
override;
 };
 
 class SalInstanceTreeView : public SalInstanceItemView, public virtual 
weld::TreeView
@@ -1735,9 +1739,6 @@ public:
 
     virtual OUString get_selected_id() const override;
 
-    virtual std::unique_ptr<weld::TreeIter> make_iterator(const 
weld::TreeIter* pOrig
-                                                          = nullptr) const 
override;
-
     virtual void copy_iterator(const weld::TreeIter& rSource, weld::TreeIter& 
rDest) const override;
 
     virtual bool get_selected(weld::TreeIter* pIter) const override;
@@ -1947,9 +1948,6 @@ public:
 
     virtual int n_children() const override;
 
-    virtual std::unique_ptr<weld::TreeIter> make_iterator(const 
weld::TreeIter* pOrig
-                                                          = nullptr) const 
override;
-
     virtual bool get_selected(weld::TreeIter* pIter) const override;
 
     virtual bool get_cursor(weld::TreeIter* pIter) const override;
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 8b82e6d8af7e..e56ff6961d5b 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -3517,6 +3517,13 @@ SalInstanceItemView::SalInstanceItemView(SvTreeListBox* 
pTreeListBox, SalInstanc
 {
 }
 
+std::unique_ptr<weld::TreeIter>
+SalInstanceItemView::make_iterator(const weld::TreeIter* pOrig) const
+{
+    return std::unique_ptr<weld::TreeIter>(
+        new SalInstanceTreeIter(static_cast<const 
SalInstanceTreeIter*>(pOrig)));
+}
+
 void SalInstanceItemView::do_clear()
 {
     m_pTreeListBox->Clear();
@@ -4529,13 +4536,6 @@ OUString SalInstanceTreeView::get_selected_id() const
     return OUString();
 }
 
-std::unique_ptr<weld::TreeIter>
-SalInstanceTreeView::make_iterator(const weld::TreeIter* pOrig) const
-{
-    return std::unique_ptr<weld::TreeIter>(
-        new SalInstanceTreeIter(static_cast<const 
SalInstanceTreeIter*>(pOrig)));
-}
-
 void SalInstanceTreeView::copy_iterator(const weld::TreeIter& rSource, 
weld::TreeIter& rDest) const
 {
     const SalInstanceTreeIter& rVclSource(static_cast<const 
SalInstanceTreeIter&>(rSource));
@@ -5437,13 +5437,6 @@ int SalInstanceIconView::n_children() const
     return m_xIconView->GetModel()->GetChildList(nullptr).size();
 }
 
-std::unique_ptr<weld::TreeIter>
-SalInstanceIconView::make_iterator(const weld::TreeIter* pOrig) const
-{
-    return std::unique_ptr<weld::TreeIter>(
-        new SalInstanceTreeIter(static_cast<const 
SalInstanceTreeIter*>(pOrig)));
-}
-
 bool SalInstanceIconView::get_selected(weld::TreeIter* pIter) const
 {
     SvTreeListEntry* pEntry = m_xIconView->FirstSelected();

Reply via email to