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",
