vcl/unx/gtk3/gtkinst.cxx |   45 ++++++++++++++++++++-------------------------
 1 file changed, 20 insertions(+), 25 deletions(-)

New commits:
commit c0d82a2a13e619e4a635d468ea165fa844795de3
Author:     Michael Weghorn <[email protected]>
AuthorDate: Fri Jan 23 11:10:48 2026 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Fri Jan 23 22:03:41 2026 +0100

    gtk weld: Deduplicate weld::ItemView::get_iterator impls
    
    GtkInstanceTreeView and GtkInstanceIconView implement
    the same logic.
    Deduplicate by moving it to the shared
    GtkInstanceItemView base class.
    
    Change-Id: I3ff50931a0ad06b19b2eb8cde70190ec48351761
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197930
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <[email protected]>

diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx
index e671618e79b6..4421fbba6654 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -13897,6 +13897,15 @@ public:
         return std::unique_ptr<weld::TreeIter>(
             new GtkInstanceTreeIter(static_cast<const 
GtkInstanceTreeIter*>(pOrig)));
     }
+
+    virtual std::unique_ptr<weld::TreeIter> get_iterator(int nPos) const 
override
+    {
+        GtkTreeIter iter;
+        if (gtk_tree_model_iter_nth_child(m_pTreeModel, &iter, nullptr, nPos))
+            return std::make_unique<GtkInstanceTreeIter>(iter);
+
+        return {};
+    }
 };
 
 class GtkInstanceTreeView : public GtkInstanceItemView, public virtual 
weld::TreeView
@@ -15533,15 +15542,6 @@ public:
         rGtkDest.iter = rGtkSource.iter;
     }
 
-    virtual std::unique_ptr<weld::TreeIter> get_iterator(int nPos) const 
override
-    {
-        GtkTreeIter iter;
-        if (gtk_tree_model_iter_nth_child(m_pTreeModel, &iter, nullptr, nPos))
-            return std::make_unique<GtkInstanceTreeIter>(iter);
-
-        return {};
-    }
-
     virtual std::unique_ptr<weld::TreeIter> get_selected() const override
     {
         GtkTreeIter iter;
@@ -16648,16 +16648,6 @@ public:
         m_nIdCol = std::max(m_nTextCol, m_nImageCol) + 1;
     }
 
-    virtual std::unique_ptr<weld::TreeIter> get_iterator(int nPos) const 
override
-    {
-        GtkTreeModel* pModel = GTK_TREE_MODEL(m_pTreeStore);
-        GtkTreeIter iter;
-        if (gtk_tree_model_iter_nth_child(pModel, &iter, nullptr, nPos))
-            return std::make_unique<GtkInstanceTreeIter>(iter);
-
-        return {};
-    }
-
     virtual int get_item_width() const override
     {
         return gtk_icon_view_get_item_width(m_pIconView);
commit 22a7a5c44382ae97d76dda839b541a97b1b9b41e
Author:     Michael Weghorn <[email protected]>
AuthorDate: Fri Jan 23 11:04:59 2026 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Fri Jan 23 22:03:33 2026 +0100

    gtk weld: Let GtkInstanceItemView hold the GtkTreeModel
    
    Both, GtkInstanceTreeView and GtkInstanceIconView
    use a GtkTreeModel.
    
    Move GtkInstanceTreeView::m_pTreeModel to the
    common GtkInstanceItemView base class.
    
    This is in preparation of deduplicating some
    GtkInstanceTreeView and GtkInstanceIconView logic
    and of fixing the GtkInstanceTreeIter::equal
    implementation.
    
    Change-Id: I26e5509b270e75e6179777946492205f78eaf91d
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197929
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <[email protected]>

diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx
index 0eb7730c474f..e671618e79b6 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -13880,9 +13880,14 @@ int promote_arg(bool bArg)
 
 class GtkInstanceItemView : public GtkInstanceWidget, public virtual 
weld::ItemView
 {
+protected:
+    GtkTreeModel* m_pTreeModel;
+
 public:
-    GtkInstanceItemView(GtkWidget* pWidget, GtkInstanceBuilder* pBuilder, bool 
bTakeOwnership)
+    GtkInstanceItemView(GtkWidget* pWidget, GtkTreeModel* pTreeModel, 
GtkInstanceBuilder* pBuilder,
+                        bool bTakeOwnership)
         : GtkInstanceWidget(pWidget, pBuilder, bTakeOwnership)
+        , m_pTreeModel(pTreeModel)
     {
     }
 
@@ -13898,7 +13903,6 @@ class GtkInstanceTreeView : public GtkInstanceItemView, 
public virtual weld::Tre
 {
 private:
     GtkTreeView* m_pTreeView;
-    GtkTreeModel* m_pTreeModel;
 
     typedef void(*setterFnc)(GtkTreeModel*, GtkTreeIter*, ...);
     setterFnc m_Setter;
@@ -14600,9 +14604,9 @@ private:
 
 public:
     GtkInstanceTreeView(GtkTreeView* pTreeView, GtkInstanceBuilder* pBuilder, 
bool bTakeOwnership)
-        : GtkInstanceItemView(GTK_WIDGET(pTreeView), pBuilder, bTakeOwnership)
+        : GtkInstanceItemView(GTK_WIDGET(pTreeView), 
gtk_tree_view_get_model(pTreeView), pBuilder,
+                              bTakeOwnership)
         , m_pTreeView(pTreeView)
-        , m_pTreeModel(gtk_tree_view_get_model(m_pTreeView))
         , m_bWorkAroundBadDragRegion(false)
         , m_bInDrag(false)
         , m_bChangedByMouse(false)
@@ -16630,9 +16634,10 @@ private:
 
 public:
     GtkInstanceIconView(GtkIconView* pIconView, GtkInstanceBuilder* pBuilder, 
bool bTakeOwnership)
-        : GtkInstanceItemView(GTK_WIDGET(pIconView), pBuilder, bTakeOwnership)
+        : GtkInstanceItemView(GTK_WIDGET(pIconView), 
gtk_icon_view_get_model(pIconView), pBuilder,
+                              bTakeOwnership)
         , m_pIconView(pIconView)
-        , m_pTreeStore(GTK_TREE_STORE(gtk_icon_view_get_model(m_pIconView)))
+        , m_pTreeStore(GTK_TREE_STORE(m_pTreeModel))
         , m_nTextCol(gtk_icon_view_get_text_column(m_pIconView)) // May be -1
         , m_nImageCol(gtk_icon_view_get_pixbuf_column(m_pIconView))
         , m_nSelectionChangedSignalId(g_signal_connect(pIconView, 
"selection-changed",

Reply via email to