vcl/inc/qt5/QtInstanceIconView.hxx | 3 vcl/inc/qt5/QtInstanceItemView.hxx | 6 + vcl/inc/qt5/QtInstanceTreeView.hxx | 3 vcl/inc/salvtables.hxx | 27 ++------ vcl/qt5/QtInstanceIconView.cxx | 12 --- vcl/qt5/QtInstanceItemView.cxx | 19 ++++++ vcl/qt5/QtInstanceTreeView.cxx | 12 --- vcl/source/app/salvtables.cxx | 116 ++++++++++++------------------------- 8 files changed, 73 insertions(+), 125 deletions(-)
New commits: commit 12a7b91c8f0acdfe68ea9ed1c6a308b52d27504b Author: Michael Weghorn <[email protected]> AuthorDate: Wed Dec 17 20:36:20 2025 +0100 Commit: Michael Weghorn <[email protected]> CommitDate: Thu Dec 18 07:22:02 2025 +0100 tdf#130857 qt weld: Deduplicate ItemView::{,un}select_all impls These are the same for QtInstanceIconView and QtInstanceTreeView. Deduplicate by moving the logic to the base class. Change-Id: Id6c0f414ad9dff8daa20e38656d01aaa0a5063c5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195812 Reviewed-by: Michael Weghorn <[email protected]> Tested-by: Jenkins diff --git a/vcl/inc/qt5/QtInstanceIconView.hxx b/vcl/inc/qt5/QtInstanceIconView.hxx index cd99b165d2f0..ff98957e0cba 100644 --- a/vcl/inc/qt5/QtInstanceIconView.hxx +++ b/vcl/inc/qt5/QtInstanceIconView.hxx @@ -66,9 +66,6 @@ public: virtual void selected_foreach(const std::function<bool(weld::TreeIter&)>& func) override; - virtual void select_all() override; - virtual void unselect_all() override; - virtual int n_children() const override; protected: diff --git a/vcl/inc/qt5/QtInstanceItemView.hxx b/vcl/inc/qt5/QtInstanceItemView.hxx index 5f13195b8eb9..52cc27a81fc2 100644 --- a/vcl/inc/qt5/QtInstanceItemView.hxx +++ b/vcl/inc/qt5/QtInstanceItemView.hxx @@ -34,11 +34,17 @@ public: virtual std::unique_ptr<weld::TreeIter> get_iterator(int nPos) const override; + virtual void select_all() override; + virtual void unselect_all() override; + protected: QModelIndex modelIndex(int nRow, int nCol = 0, const QModelIndex& rParentIndex = QModelIndex()) const; QModelIndex modelIndex(const weld::TreeIter& rIter, int nCol = 0) const; QtInstanceTreeIter treeIter(int nRow, const QModelIndex& rParentIndex = QModelIndex()) const; + +private: + QAbstractItemView& getItemView(); }; /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ diff --git a/vcl/inc/qt5/QtInstanceTreeView.hxx b/vcl/inc/qt5/QtInstanceTreeView.hxx index 047ebe09eb19..f9ff62c3722b 100644 --- a/vcl/inc/qt5/QtInstanceTreeView.hxx +++ b/vcl/inc/qt5/QtInstanceTreeView.hxx @@ -155,9 +155,6 @@ public: virtual void enable_drag_source(rtl::Reference<TransferDataContainer>& rTransferable, sal_uInt8 eDNDConstants) override; - virtual void select_all() override; - virtual void unselect_all() override; - virtual int n_children() const override; virtual void make_sorted() override; diff --git a/vcl/qt5/QtInstanceIconView.cxx b/vcl/qt5/QtInstanceIconView.cxx index 8b4e6e2b5ece..9f43dba3eb4a 100644 --- a/vcl/qt5/QtInstanceIconView.cxx +++ b/vcl/qt5/QtInstanceIconView.cxx @@ -281,18 +281,6 @@ void QtInstanceIconView::selected_foreach(const std::function<bool(weld::TreeIte assert(false && "Not implemented yet"); } -void QtInstanceIconView::select_all() -{ - SolarMutexGuard g; - GetQtInstance().RunInMainThread([&] { m_pListView->selectAll(); }); -} - -void QtInstanceIconView::unselect_all() -{ - SolarMutexGuard g; - GetQtInstance().RunInMainThread([&] { m_pListView->clearSelection(); }); -} - int QtInstanceIconView::n_children() const { SolarMutexGuard g; diff --git a/vcl/qt5/QtInstanceItemView.cxx b/vcl/qt5/QtInstanceItemView.cxx index d9c72c7e8fa3..8612af62de7d 100644 --- a/vcl/qt5/QtInstanceItemView.cxx +++ b/vcl/qt5/QtInstanceItemView.cxx @@ -31,6 +31,18 @@ std::unique_ptr<weld::TreeIter> QtInstanceItemView::get_iterator(int nPos) const return {}; } +void QtInstanceItemView::select_all() +{ + SolarMutexGuard g; + GetQtInstance().RunInMainThread([&] { getItemView().selectAll(); }); +} + +void QtInstanceItemView::unselect_all() +{ + SolarMutexGuard g; + GetQtInstance().RunInMainThread([&] { getItemView().clearSelection(); }); +} + void QtInstanceItemView::do_clear() { SolarMutexGuard g; @@ -55,4 +67,11 @@ QtInstanceTreeIter QtInstanceItemView::treeIter(int nRow, const QModelIndex& rPa return QtInstanceTreeIter(m_rModel.index(nRow, 0, rParentIndex)); } +QAbstractItemView& QtInstanceItemView::getItemView() +{ + QAbstractItemView* pView = qobject_cast<QAbstractItemView*>(getQWidget()); + assert(pView); + return *pView; +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ diff --git a/vcl/qt5/QtInstanceTreeView.cxx b/vcl/qt5/QtInstanceTreeView.cxx index 3ade720c793f..991605f48960 100644 --- a/vcl/qt5/QtInstanceTreeView.cxx +++ b/vcl/qt5/QtInstanceTreeView.cxx @@ -840,18 +840,6 @@ void QtInstanceTreeView::enable_drag_source(rtl::Reference<TransferDataContainer assert(false && "Not implemented yet"); } -void QtInstanceTreeView::select_all() -{ - SolarMutexGuard g; - GetQtInstance().RunInMainThread([&] { m_pTreeView->selectAll(); }); -} - -void QtInstanceTreeView::unselect_all() -{ - SolarMutexGuard g; - GetQtInstance().RunInMainThread([&] { m_pTreeView->clearSelection(); }); -} - int QtInstanceTreeView::n_children() const { SolarMutexGuard g; commit 5504bafc8e9a8ef3f70064e12d536c5650e9663e Author: Michael Weghorn <[email protected]> AuthorDate: Wed Dec 17 20:28:16 2025 +0100 Commit: Michael Weghorn <[email protected]> CommitDate: Thu Dec 18 07:21:56 2025 +0100 vcl weld: Deduplicate (un)select_all and n_children in ItemView impl The implementations are the same for SalInstanceIconView and SalInstanceTreeView. Move the SalInstanceTreeView implementations to the SalInstanceItemView class and drop overrides. Change-Id: Ia576ad4c401709df874472d2c9f35710fc758a37 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195811 Tested-by: Jenkins Reviewed-by: Michael Weghorn <[email protected]> diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx index bcc33e8952a7..2004fca25dd1 100644 --- a/vcl/inc/salvtables.hxx +++ b/vcl/inc/salvtables.hxx @@ -1502,6 +1502,11 @@ public: = nullptr) const override; virtual std::unique_ptr<weld::TreeIter> get_iterator(int nPos) const override; + + virtual void select_all() override; + virtual void unselect_all() override; + + virtual int n_children() const override; }; class SalInstanceTreeView : public SalInstanceItemView, public virtual weld::TreeView @@ -1630,11 +1635,6 @@ public: virtual void swap(int pos1, int pos2) override; - virtual void select_all() override; - virtual void unselect_all() override; - - virtual int n_children() const override; - virtual int iter_n_children(const weld::TreeIter& rIter) const override; virtual int get_cursor_index() const override; @@ -1941,11 +1941,6 @@ public: virtual int count_selected_items() const override; - virtual void select_all() override; - virtual void unselect_all() override; - - virtual int n_children() 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 62bd2c7773e1..7264c11d1ae6 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -3532,6 +3532,15 @@ std::unique_ptr<weld::TreeIter> SalInstanceItemView::get_iterator(int nPos) cons return {}; } +void SalInstanceItemView::select_all() { unselect(-1); } + +void SalInstanceItemView::unselect_all() { select(-1); } + +int SalInstanceItemView::n_children() const +{ + return m_pTreeListBox->GetModel()->GetChildList(nullptr).size(); +} + void SalInstanceItemView::do_select(int pos) { assert(m_pTreeListBox->IsUpdateMode() @@ -4093,15 +4102,6 @@ void SalInstanceTreeView::swap(int pos1, int pos2) pModel->Move(pEntry1, pEntry2); } -void SalInstanceTreeView::select_all() { unselect(-1); } - -void SalInstanceTreeView::unselect_all() { select(-1); } - -int SalInstanceTreeView::n_children() const -{ - return m_xTreeView->GetModel()->GetChildList(nullptr).size(); -} - int SalInstanceTreeView::iter_n_children(const weld::TreeIter& rIter) const { const SalInstanceTreeIter& rVclIter = static_cast<const SalInstanceTreeIter&>(rIter); @@ -5407,15 +5407,6 @@ OUString SalInstanceIconView::get_selected_text() const int SalInstanceIconView::count_selected_items() const { return m_xIconView->GetSelectionCount(); } -void SalInstanceIconView::select_all() { unselect(-1); } - -void SalInstanceIconView::unselect_all() { select(-1); } - -int SalInstanceIconView::n_children() const -{ - return m_xIconView->GetModel()->GetChildList(nullptr).size(); -} - bool SalInstanceIconView::get_selected(weld::TreeIter* pIter) const { SvTreeListEntry* pEntry = m_xIconView->FirstSelected(); commit a14f2db5d8ea9e32a0446daea230fcb4dd6be03e Author: Michael Weghorn <[email protected]> AuthorDate: Wed Dec 17 20:21:04 2025 +0100 Commit: Michael Weghorn <[email protected]> CommitDate: Thu Dec 18 07:21:49 2025 +0100 vcl weld: Deduplicate weld::ItemView::do{,_unselect} impls These are the same for SalInstanceIconView and SalInstanceTreeView, except that the latter has additional asserts. Move the SalInstanceTreeView implementations to the SalInstanceItemView class and drop overrides. Change-Id: I87ad91b30003dde2402b8f05540980f80d7a278f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195810 Reviewed-by: Michael Weghorn <[email protected]> Tested-by: Jenkins diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx index 510857561bbe..bcc33e8952a7 100644 --- a/vcl/inc/salvtables.hxx +++ b/vcl/inc/salvtables.hxx @@ -1493,6 +1493,8 @@ protected: SalInstanceItemView(SvTreeListBox* pTreeListBox, SalInstanceBuilder* pBuilder, bool bTakeOwnership); + virtual void do_select(int pos) override; + virtual void do_unselect(int pos) override; virtual void do_clear() override; public: @@ -1635,8 +1637,6 @@ public: virtual int iter_n_children(const weld::TreeIter& rIter) const override; - virtual void do_select(int pos) override; - virtual int get_cursor_index() const override; virtual void do_set_cursor(int pos) override; @@ -1645,8 +1645,6 @@ public: virtual bool is_selected(int pos) const override; - virtual void do_unselect(int pos) override; - virtual std::vector<int> get_selected_rows() const override; OUString get_text(SvTreeListEntry* pEntry, int col) const; @@ -1767,10 +1765,12 @@ public: virtual void do_remove(const weld::TreeIter& rIter) override; + using SalInstanceItemView::do_select; virtual void do_select(const weld::TreeIter& rIter) override; virtual void do_scroll_to_row(const weld::TreeIter& rIter) override; + using SalInstanceItemView::do_unselect; virtual void do_unselect(const weld::TreeIter& rIter) override; virtual int get_iter_depth(const weld::TreeIter& rIter) const override; @@ -1941,10 +1941,6 @@ public: virtual int count_selected_items() const override; - virtual void do_select(int pos) override; - - virtual void do_unselect(int pos) override; - virtual void select_all() override; virtual void unselect_all() override; diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index 7c367961a103..62bd2c7773e1 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -3532,6 +3532,36 @@ std::unique_ptr<weld::TreeIter> SalInstanceItemView::get_iterator(int nPos) cons return {}; } +void SalInstanceItemView::do_select(int pos) +{ + assert(m_pTreeListBox->IsUpdateMode() + && "don't select when frozen, select after thaw. Note selection doesn't survive a " + "freeze"); + if (pos == -1 || (pos == 0 && n_children() == 0)) + m_pTreeListBox->SelectAll(false); + else + { + SvTreeListEntry* pEntry = m_pTreeListBox->GetEntry(nullptr, pos); + assert(pEntry && "bad pos?"); + m_pTreeListBox->Select(pEntry, true); + m_pTreeListBox->MakeVisible(pEntry); + } +} + +void SalInstanceItemView::do_unselect(int pos) +{ + assert(m_pTreeListBox->IsUpdateMode() + && "don't select when frozen, select after thaw. Note selection doesn't survive a " + "freeze"); + if (pos == -1) + m_pTreeListBox->SelectAll(true); + else + { + SvTreeListEntry* pEntry = m_pTreeListBox->GetEntry(nullptr, pos); + m_pTreeListBox->Select(pEntry, false); + } +} + void SalInstanceItemView::do_clear() { m_pTreeListBox->Clear(); @@ -4078,22 +4108,6 @@ int SalInstanceTreeView::iter_n_children(const weld::TreeIter& rIter) const return m_xTreeView->GetModel()->GetChildList(rVclIter.iter).size(); } -void SalInstanceTreeView::do_select(int pos) -{ - assert(m_xTreeView->IsUpdateMode() - && "don't select when frozen, select after thaw. Note selection doesn't survive a " - "freeze"); - if (pos == -1 || (pos == 0 && n_children() == 0)) - m_xTreeView->SelectAll(false); - else - { - SvTreeListEntry* pEntry = m_xTreeView->GetEntry(nullptr, pos); - assert(pEntry && "bad pos?"); - m_xTreeView->Select(pEntry, true); - m_xTreeView->MakeVisible(pEntry); - } -} - int SalInstanceTreeView::get_cursor_index() const { SvTreeListEntry* pEntry = m_xTreeView->GetCurEntry(); @@ -4128,20 +4142,6 @@ bool SalInstanceTreeView::is_selected(int pos) const return m_xTreeView->IsSelected(pEntry); } -void SalInstanceTreeView::do_unselect(int pos) -{ - assert(m_xTreeView->IsUpdateMode() - && "don't select when frozen, select after thaw. Note selection doesn't survive a " - "freeze"); - if (pos == -1) - m_xTreeView->SelectAll(true); - else - { - SvTreeListEntry* pEntry = m_xTreeView->GetEntry(nullptr, pos); - m_xTreeView->Select(pEntry, false); - } -} - std::vector<int> SalInstanceTreeView::get_selected_rows() const { std::vector<int> aRows; @@ -5407,35 +5407,6 @@ OUString SalInstanceIconView::get_selected_text() const int SalInstanceIconView::count_selected_items() const { return m_xIconView->GetSelectionCount(); } -void SalInstanceIconView::do_select(int pos) -{ - assert(m_xIconView->IsUpdateMode() - && "don't select when frozen, select after thaw. Note selection doesn't survive a " - "freeze"); - if (pos == -1 || (pos == 0 && n_children() == 0)) - m_xIconView->SelectAll(false); - else - { - SvTreeListEntry* pEntry = m_xIconView->GetEntry(nullptr, pos); - m_xIconView->Select(pEntry, true); - m_xIconView->MakeVisible(pEntry); - } -} - -void SalInstanceIconView::do_unselect(int pos) -{ - assert(m_xIconView->IsUpdateMode() - && "don't select when frozen, select after thaw. Note selection doesn't survive a " - "freeze"); - if (pos == -1) - m_xIconView->SelectAll(true); - else - { - SvTreeListEntry* pEntry = m_xIconView->GetEntry(nullptr, pos); - m_xIconView->Select(pEntry, false); - } -} - void SalInstanceIconView::select_all() { unselect(-1); } void SalInstanceIconView::unselect_all() { select(-1); }
