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();
