include/vcl/weld/IconView.hxx      |    2 -
 include/vcl/weld/ItemView.hxx      |    4 +++
 include/vcl/weld/TreeView.hxx      |    3 --
 vcl/inc/qt5/QtInstanceIconView.hxx |    2 -
 vcl/inc/qt5/QtInstanceItemView.hxx |    3 ++
 vcl/inc/qt5/QtInstanceTreeView.hxx |    2 -
 vcl/inc/salvtables.hxx             |   11 ++-------
 vcl/qt5/QtInstanceIconView.cxx     |   12 ----------
 vcl/qt5/QtInstanceItemView.cxx     |   18 +++++++++++++++
 vcl/qt5/QtInstanceTreeView.cxx     |   18 ---------------
 vcl/source/app/salvtables.cxx      |   42 ++++++++++++-------------------------
 11 files changed, 42 insertions(+), 75 deletions(-)

New commits:
commit 453551b80d9a9b80a6c3465f2aef0a913374a3f2
Author:     Michael Weghorn <[email protected]>
AuthorDate: Fri Dec 19 11:44:13 2025 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Fri Dec 19 22:51:45 2025 +0100

    tdf#130857 qt weld: Move get_iter_first, iter_next_sibling to base
    
    The QtInstanceTreeView implementation is fine for
    QtInstancIconView as well, so move it to the
    common base class.
    
    Change-Id: I5806ebcc3858c19b0a57b3263468b67305c34fbf
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195890
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <[email protected]>

diff --git a/vcl/inc/qt5/QtInstanceIconView.hxx 
b/vcl/inc/qt5/QtInstanceIconView.hxx
index aab0ff9fbd25..675c8f458dcb 100644
--- a/vcl/inc/qt5/QtInstanceIconView.hxx
+++ b/vcl/inc/qt5/QtInstanceIconView.hxx
@@ -60,10 +60,8 @@ public:
     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;
-    virtual bool get_iter_first(weld::TreeIter& rIter) const override;
     virtual OUString get_id(const weld::TreeIter& rIter) const override;
     virtual OUString get_text(const weld::TreeIter& rIter) const override;
-    virtual bool iter_next_sibling(weld::TreeIter& rIter) const override;
     virtual void do_scroll_to_item(const weld::TreeIter& rIter) override;
 
     virtual void selected_foreach(const std::function<bool(weld::TreeIter&)>& 
func) override;
diff --git a/vcl/inc/qt5/QtInstanceItemView.hxx 
b/vcl/inc/qt5/QtInstanceItemView.hxx
index 2c039ddf3cd5..b49c61f96a4c 100644
--- a/vcl/inc/qt5/QtInstanceItemView.hxx
+++ b/vcl/inc/qt5/QtInstanceItemView.hxx
@@ -35,6 +35,9 @@ public:
     virtual std::unique_ptr<weld::TreeIter> make_iterator(const 
weld::TreeIter* pOrig
                                                           = nullptr) const 
override;
 
+    virtual bool get_iter_first(weld::TreeIter& rIter) const override;
+    virtual bool iter_next_sibling(weld::TreeIter& rIter) const override;
+
     virtual std::unique_ptr<weld::TreeIter> get_iterator(int nPos) const 
override;
 
 protected:
diff --git a/vcl/inc/qt5/QtInstanceTreeView.hxx 
b/vcl/inc/qt5/QtInstanceTreeView.hxx
index ec489b1ba480..3ecf6db17fc0 100644
--- a/vcl/inc/qt5/QtInstanceTreeView.hxx
+++ b/vcl/inc/qt5/QtInstanceTreeView.hxx
@@ -87,8 +87,6 @@ public:
     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;
-    virtual bool get_iter_first(weld::TreeIter& rIter) const override;
-    virtual bool iter_next_sibling(weld::TreeIter& rIter) const override;
     virtual bool iter_previous_sibling(weld::TreeIter& rIter) const override;
     virtual bool iter_next(weld::TreeIter& rIter) const override;
     virtual bool iter_previous(weld::TreeIter& rIter) const override;
diff --git a/vcl/qt5/QtInstanceIconView.cxx b/vcl/qt5/QtInstanceIconView.cxx
index fc203f0f0c23..ee3ed59d94f8 100644
--- a/vcl/qt5/QtInstanceIconView.cxx
+++ b/vcl/qt5/QtInstanceIconView.cxx
@@ -228,12 +228,6 @@ void QtInstanceIconView::do_set_cursor(const 
weld::TreeIter& rIter)
     });
 }
 
-bool QtInstanceIconView::get_iter_first(weld::TreeIter&) const
-{
-    assert(false && "Not implemented yet");
-    return false;
-}
-
 OUString QtInstanceIconView::get_id(const weld::TreeIter& rIter) const
 {
     SolarMutexGuard g;
@@ -263,12 +257,6 @@ OUString QtInstanceIconView::get_text(const 
weld::TreeIter& rIter) const
     return sText;
 }
 
-bool QtInstanceIconView::iter_next_sibling(weld::TreeIter&) const
-{
-    assert(false && "Not implemented yet");
-    return false;
-}
-
 void QtInstanceIconView::do_scroll_to_item(const weld::TreeIter& rIter)
 {
     SolarMutexGuard g;
diff --git a/vcl/qt5/QtInstanceItemView.cxx b/vcl/qt5/QtInstanceItemView.cxx
index 19281ede8438..cf5d61efe6c7 100644
--- a/vcl/qt5/QtInstanceItemView.cxx
+++ b/vcl/qt5/QtInstanceItemView.cxx
@@ -22,6 +22,24 @@ std::unique_ptr<weld::TreeIter> 
QtInstanceItemView::make_iterator(const weld::Tr
     return std::make_unique<QtInstanceTreeIter>(aIndex);
 }
 
+bool QtInstanceItemView::get_iter_first(weld::TreeIter& rIter) const
+{
+    QtInstanceTreeIter& rQtIter = static_cast<QtInstanceTreeIter&>(rIter);
+    const QModelIndex aIndex = modelIndex(0);
+    rQtIter.setModelIndex(aIndex);
+    return aIndex.isValid();
+}
+
+bool QtInstanceItemView::iter_next_sibling(weld::TreeIter& rIter) const
+{
+    QtInstanceTreeIter& rQtIter = static_cast<QtInstanceTreeIter&>(rIter);
+    const QModelIndex aIndex = rQtIter.modelIndex();
+    const QModelIndex aSiblingIndex = m_rModel.sibling(aIndex.row() + 1, 0, 
aIndex);
+    rQtIter.setModelIndex(aSiblingIndex);
+
+    return aSiblingIndex.isValid();
+}
+
 std::unique_ptr<weld::TreeIter> QtInstanceItemView::get_iterator(int nPos) 
const
 {
     const QModelIndex aIndex = modelIndex(nPos);
diff --git a/vcl/qt5/QtInstanceTreeView.cxx b/vcl/qt5/QtInstanceTreeView.cxx
index 18d6874f18dc..c995c694c98a 100644
--- a/vcl/qt5/QtInstanceTreeView.cxx
+++ b/vcl/qt5/QtInstanceTreeView.cxx
@@ -377,24 +377,6 @@ void QtInstanceTreeView::do_set_cursor(const 
weld::TreeIter& rIter)
     GetQtInstance().RunInMainThread([&] { 
m_pTreeView->setCurrentIndex(modelIndex(rIter)); });
 }
 
-bool QtInstanceTreeView::get_iter_first(weld::TreeIter& rIter) const
-{
-    QtInstanceTreeIter& rQtIter = static_cast<QtInstanceTreeIter&>(rIter);
-    const QModelIndex aIndex = modelIndex(0);
-    rQtIter.setModelIndex(aIndex);
-    return aIndex.isValid();
-}
-
-bool QtInstanceTreeView::iter_next_sibling(weld::TreeIter& rIter) const
-{
-    QtInstanceTreeIter& rQtIter = static_cast<QtInstanceTreeIter&>(rIter);
-    const QModelIndex aIndex = rQtIter.modelIndex();
-    const QModelIndex aSiblingIndex = m_pModel->sibling(aIndex.row() + 1, 0, 
aIndex);
-    rQtIter.setModelIndex(aSiblingIndex);
-
-    return aSiblingIndex.isValid();
-}
-
 bool QtInstanceTreeView::iter_previous_sibling(weld::TreeIter& rIter) const
 {
     QtInstanceTreeIter& rQtIter = static_cast<QtInstanceTreeIter&>(rIter);
commit f1be33dac3eb6278775b559ad12fbf93f65b5af9
Author:     Michael Weghorn <[email protected]>
AuthorDate: Fri Dec 19 11:39:27 2025 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Fri Dec 19 22:51:39 2025 +0100

    vcl weld: Deduplicate get_iter_first, iter_next_sibling
    
    The SalInstanceTreeView and SalInstanceIconView
    implementations implement the same logic.
    
    Unify the implementation in the base class.
    
    Change-Id: I146138607c36e73d1df124b5e33667fbc1ed9b30
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195889
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <[email protected]>

diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx
index d9a9ab4092e0..94c55a686482 100644
--- a/vcl/inc/salvtables.hxx
+++ b/vcl/inc/salvtables.hxx
@@ -1508,6 +1508,9 @@ public:
     virtual std::unique_ptr<weld::TreeIter> make_iterator(const 
weld::TreeIter* pOrig
                                                           = nullptr) const 
override;
 
+    virtual bool get_iter_first(weld::TreeIter& rIter) const override;
+    virtual bool iter_next_sibling(weld::TreeIter& rIter) const override;
+
     virtual std::unique_ptr<weld::TreeIter> get_iterator(int nPos) const 
override;
 
     virtual OUString get_selected_id() const override;
@@ -1750,12 +1753,8 @@ public:
 
     virtual void do_set_cursor(const weld::TreeIter& rIter) override;
 
-    virtual bool get_iter_first(weld::TreeIter& rIter) const override;
-
     bool get_iter_abs_pos(weld::TreeIter& rIter, int nPos) const;
 
-    virtual bool iter_next_sibling(weld::TreeIter& rIter) const override;
-
     virtual bool iter_previous_sibling(weld::TreeIter& rIter) const override;
 
     virtual bool iter_next(weld::TreeIter& rIter) const override;
@@ -1946,10 +1945,6 @@ public:
 
     virtual void do_set_cursor(const weld::TreeIter& rIter) override;
 
-    virtual bool get_iter_first(weld::TreeIter& rIter) const override;
-
-    virtual bool iter_next_sibling(weld::TreeIter& rIter) const override;
-
     virtual void do_scroll_to_item(const weld::TreeIter& rIter) override;
 
     virtual void selected_foreach(const std::function<bool(weld::TreeIter&)>& 
func) override;
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index f4700b05f106..48ccbc7e112c 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -3524,6 +3524,20 @@ SalInstanceItemView::make_iterator(const weld::TreeIter* 
pOrig) const
         new SalInstanceTreeIter(static_cast<const 
SalInstanceTreeIter*>(pOrig)));
 }
 
+bool SalInstanceItemView::get_iter_first(weld::TreeIter& rIter) const
+{
+    SalInstanceTreeIter& rVclIter = static_cast<SalInstanceTreeIter&>(rIter);
+    rVclIter.iter = m_pTreeListBox->GetEntry(0);
+    return rVclIter.iter != nullptr;
+}
+
+bool SalInstanceItemView::iter_next_sibling(weld::TreeIter& rIter) const
+{
+    SalInstanceTreeIter& rVclIter = static_cast<SalInstanceTreeIter&>(rIter);
+    rVclIter.iter = rVclIter.iter->NextSibling();
+    return rVclIter.iter != nullptr;
+}
+
 std::unique_ptr<weld::TreeIter> SalInstanceItemView::get_iterator(int nPos) 
const
 {
     if (SvTreeListEntry* pEntry = m_pTreeListBox->GetEntry(nPos))
@@ -4578,13 +4592,6 @@ void SalInstanceTreeView::do_set_cursor(const 
weld::TreeIter& rIter)
     m_xTreeView->SetCurEntry(rVclIter.iter);
 }
 
-bool SalInstanceTreeView::get_iter_first(weld::TreeIter& rIter) const
-{
-    SalInstanceTreeIter& rVclIter = static_cast<SalInstanceTreeIter&>(rIter);
-    rVclIter.iter = m_xTreeView->GetEntry(0);
-    return rVclIter.iter != nullptr;
-}
-
 bool SalInstanceTreeView::get_iter_abs_pos(weld::TreeIter& rIter, int nAbsPos) 
const
 {
     SalInstanceTreeIter& rVclIter = static_cast<SalInstanceTreeIter&>(rIter);
@@ -4592,13 +4599,6 @@ bool 
SalInstanceTreeView::get_iter_abs_pos(weld::TreeIter& rIter, int nAbsPos) c
     return rVclIter.iter != nullptr;
 }
 
-bool SalInstanceTreeView::iter_next_sibling(weld::TreeIter& rIter) const
-{
-    SalInstanceTreeIter& rVclIter = static_cast<SalInstanceTreeIter&>(rIter);
-    rVclIter.iter = rVclIter.iter->NextSibling();
-    return rVclIter.iter != nullptr;
-}
-
 bool SalInstanceTreeView::iter_previous_sibling(weld::TreeIter& rIter) const
 {
     SalInstanceTreeIter& rVclIter = static_cast<SalInstanceTreeIter&>(rIter);
@@ -5415,20 +5415,6 @@ void SalInstanceIconView::do_set_cursor(const 
weld::TreeIter& rIter)
     m_xIconView->SetCurEntry(rVclIter.iter);
 }
 
-bool SalInstanceIconView::get_iter_first(weld::TreeIter& rIter) const
-{
-    SalInstanceTreeIter& rVclIter = static_cast<SalInstanceTreeIter&>(rIter);
-    rVclIter.iter = m_xIconView->GetEntry(0);
-    return rVclIter.iter != nullptr;
-}
-
-bool SalInstanceIconView::iter_next_sibling(weld::TreeIter& rIter) const
-{
-    SalInstanceTreeIter& rVclIter = static_cast<SalInstanceTreeIter&>(rIter);
-    rVclIter.iter = rVclIter.iter->NextSibling();
-    return rVclIter.iter != nullptr;
-}
-
 void SalInstanceIconView::do_scroll_to_item(const weld::TreeIter& rIter)
 {
     assert(m_xIconView->IsUpdateMode()
commit 7c166be1140eec68085ce524a238d6649dc43bbd
Author:     Michael Weghorn <[email protected]>
AuthorDate: Fri Dec 19 11:30:27 2025 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Fri Dec 19 22:51:32 2025 +0100

    weld: Move get_iter_first and iter_next_sibling to ItemView
    
    These purely virtual methods exist in both, weld::TreeView
    and weld::ItemView.
    Move to the common base class.
    
    Change-Id: Ic7096be586733ae6685c98ef91d249ff71a8f876
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195888
    Reviewed-by: Michael Weghorn <[email protected]>
    Tested-by: Jenkins

diff --git a/include/vcl/weld/IconView.hxx b/include/vcl/weld/IconView.hxx
index 1ef8c9aca6cc..fadb1a1dd742 100644
--- a/include/vcl/weld/IconView.hxx
+++ b/include/vcl/weld/IconView.hxx
@@ -145,10 +145,8 @@ public:
         enable_notify_events();
     }
 
-    virtual bool get_iter_first(TreeIter& rIter) const = 0;
     virtual OUString get_id(const TreeIter& rIter) const = 0;
     virtual OUString get_text(const TreeIter& rIter) const = 0;
-    virtual bool iter_next_sibling(TreeIter& rIter) const = 0;
 
     void scroll_to_item(const TreeIter& rIter)
     {
diff --git a/include/vcl/weld/ItemView.hxx b/include/vcl/weld/ItemView.hxx
index 4d661282ae62..e7f9e61e1607 100644
--- a/include/vcl/weld/ItemView.hxx
+++ b/include/vcl/weld/ItemView.hxx
@@ -31,6 +31,10 @@ protected:
 public:
     virtual std::unique_ptr<TreeIter> make_iterator(const TreeIter* pOrig = 
nullptr) const = 0;
 
+    virtual bool get_iter_first(TreeIter& rIter) const = 0;
+    // set iter to point to next node at the current level
+    virtual bool iter_next_sibling(TreeIter& rIter) const = 0;
+
     virtual std::unique_ptr<TreeIter> get_iterator(int nPos) const = 0;
 
     virtual OUString get_selected_id() const = 0;
diff --git a/include/vcl/weld/TreeView.hxx b/include/vcl/weld/TreeView.hxx
index 951a601fc668..945192304e8e 100644
--- a/include/vcl/weld/TreeView.hxx
+++ b/include/vcl/weld/TreeView.hxx
@@ -311,9 +311,6 @@ public:
         enable_notify_events();
     }
 
-    virtual bool get_iter_first(TreeIter& rIter) const = 0;
-    // set iter to point to next node at the current level
-    virtual bool iter_next_sibling(TreeIter& rIter) const = 0;
     // set iter to point to previous node at the current level
     virtual bool iter_previous_sibling(TreeIter& rIter) const = 0;
     // set iter to point to next node, depth first, then sibling

Reply via email to