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

Reply via email to