include/vcl/weld/IconView.hxx      |    8 --------
 include/vcl/weld/ItemView.hxx      |    4 ++++
 include/vcl/weld/TreeView.hxx      |   10 ++--------
 vcl/inc/qt5/QtInstanceIconView.hxx |    1 -
 vcl/inc/qt5/QtInstanceItemView.hxx |    2 ++
 vcl/inc/qt5/QtInstanceTreeView.hxx |    2 +-
 vcl/inc/salvtables.hxx             |    7 +++----
 vcl/qt5/QtInstanceIconView.cxx     |    9 ---------
 vcl/qt5/QtInstanceItemView.cxx     |    7 +++++++
 vcl/qt5/QtInstanceTreeView.cxx     |    7 -------
 vcl/source/app/salvtables.cxx      |   18 ++++++------------
 vcl/source/weld/ItemView.cxx       |    7 +++++++
 12 files changed, 32 insertions(+), 50 deletions(-)

New commits:
commit 0e4d50d73b65873ce61b6d3e864d042026c4f244
Author:     Michael Weghorn <[email protected]>
AuthorDate: Fri Dec 19 23:57:01 2025 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Sat Dec 20 06:47:57 2025 +0100

    vcl weld: Deduplicate ItemView::do_set_cursor impls
    
    The SalInstanceTreeView and SalInstanceIconView implementations
    are the same, so deduplicate them by moving to the common base
    class.
    
    Change-Id: I7d1194880b1650320eeb9060fe3ddc0fd5ed3ef0
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195945
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <[email protected]>

diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx
index 93a22e695ea3..3fc07ec50f5b 100644
--- a/vcl/inc/salvtables.hxx
+++ b/vcl/inc/salvtables.hxx
@@ -1496,6 +1496,8 @@ protected:
     SalInstanceItemView(SvTreeListBox* pTreeListBox, SalInstanceBuilder* 
pBuilder,
                         bool bTakeOwnership);
 
+    virtual void do_set_cursor(const weld::TreeIter& rIter) override;
+
     virtual void do_select(const weld::TreeIter& rIter) override;
     virtual void do_unselect(const weld::TreeIter& rIter) override;
 
@@ -1651,6 +1653,7 @@ public:
 
     virtual int get_cursor_index() const override;
 
+    using SalInstanceItemView::do_set_cursor;
     virtual void do_set_cursor(int pos) override;
 
     virtual void do_scroll_to_row(int pos) override;
@@ -1753,8 +1756,6 @@ public:
 
     virtual bool get_cursor(weld::TreeIter* pIter) const override;
 
-    virtual void do_set_cursor(const weld::TreeIter& rIter) override;
-
     bool get_iter_abs_pos(weld::TreeIter& rIter, int nPos) const;
 
     virtual bool iter_previous_sibling(weld::TreeIter& rIter) const override;
@@ -1943,8 +1944,6 @@ public:
 
     virtual bool get_cursor(weld::TreeIter* pIter) const override;
 
-    virtual void do_set_cursor(const weld::TreeIter& rIter) 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 c0eb1a29c592..f63b78b040dd 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -3592,6 +3592,12 @@ int SalInstanceItemView::n_children() const
     return m_pTreeListBox->GetModel()->GetChildList(nullptr).size();
 }
 
+void SalInstanceItemView::do_set_cursor(const weld::TreeIter& rIter)
+{
+    const SalInstanceTreeIter& rVclIter = static_cast<const 
SalInstanceTreeIter&>(rIter);
+    m_pTreeListBox->SetCurEntry(rVclIter.iter);
+}
+
 void SalInstanceItemView::do_select(const weld::TreeIter& rIter)
 {
     assert(m_pTreeListBox->IsUpdateMode()
@@ -4592,12 +4598,6 @@ bool SalInstanceTreeView::get_cursor(weld::TreeIter* 
pIter) const
     return pEntry != nullptr;
 }
 
-void SalInstanceTreeView::do_set_cursor(const weld::TreeIter& rIter)
-{
-    const SalInstanceTreeIter& rVclIter = static_cast<const 
SalInstanceTreeIter&>(rIter);
-    m_xTreeView->SetCurEntry(rVclIter.iter);
-}
-
 bool SalInstanceTreeView::get_iter_abs_pos(weld::TreeIter& rIter, int nAbsPos) 
const
 {
     SalInstanceTreeIter& rVclIter = static_cast<SalInstanceTreeIter&>(rIter);
@@ -5409,12 +5409,6 @@ bool SalInstanceIconView::get_cursor(weld::TreeIter* 
pIter) const
     return pEntry != nullptr;
 }
 
-void SalInstanceIconView::do_set_cursor(const weld::TreeIter& rIter)
-{
-    const SalInstanceTreeIter& rVclIter = static_cast<const 
SalInstanceTreeIter&>(rIter);
-    m_xIconView->SetCurEntry(rVclIter.iter);
-}
-
 void SalInstanceIconView::do_scroll_to_item(const weld::TreeIter& rIter)
 {
     assert(m_xIconView->IsUpdateMode()
commit 678baa804af050799a7f00fa9f83978a49d40918
Author:     Michael Weghorn <[email protected]>
AuthorDate: Fri Dec 19 23:47:19 2025 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Sat Dec 20 06:47:50 2025 +0100

    tdf#130857 qt weld: Move do_set_cursor impl to QtInstanceItemView
    
    Move the QtInstanceTreeView logic to the common
    base class and drop the overrides.
    
    The QtInstanceIconView implementation seems only to
    be different because it was originally the same as the
    QtInstanceTreeView one, but then not updated while the
    QtInstanceTreeView one was in
    
        commit 08c8f9483312b531d7184785633f8121821d9725
        Author: Michael Weghorn <[email protected]>
        Date:   Fri Feb 21 19:42:57 2025 +0100
    
            tdf#130857 qt weld: Also select item in 
QtInstanceTreeView::set_cursor
    
    and
    
        commit 8ebcedc3562514bfe48a3bec19324503f619738b
        Author: Michael Weghorn <[email protected]>
        Date:   Wed Aug 13 11:14:17 2025 +0200
    
            tdf#130857 qt weld: Simplify QtInstanceTreeView::set_cursor
    
    Change-Id: Ib28af146382ee670c142de9765483568362cc5b9
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195944
    Reviewed-by: Michael Weghorn <[email protected]>
    Tested-by: Jenkins

diff --git a/vcl/inc/qt5/QtInstanceIconView.hxx 
b/vcl/inc/qt5/QtInstanceIconView.hxx
index 675c8f458dcb..3d49a4689123 100644
--- a/vcl/inc/qt5/QtInstanceIconView.hxx
+++ b/vcl/inc/qt5/QtInstanceIconView.hxx
@@ -59,7 +59,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 OUString get_id(const weld::TreeIter& rIter) const override;
     virtual OUString get_text(const weld::TreeIter& rIter) const override;
     virtual void do_scroll_to_item(const weld::TreeIter& rIter) override;
diff --git a/vcl/inc/qt5/QtInstanceItemView.hxx 
b/vcl/inc/qt5/QtInstanceItemView.hxx
index aad7eba1f839..1b0a7a24bb30 100644
--- a/vcl/inc/qt5/QtInstanceItemView.hxx
+++ b/vcl/inc/qt5/QtInstanceItemView.hxx
@@ -24,6 +24,8 @@ class QtInstanceItemView : public QtInstanceWidget, public 
virtual weld::ItemVie
     QAbstractItemModel& m_rModel;
 
 protected:
+    virtual void do_set_cursor(const weld::TreeIter& rIter) override;
+
     virtual void do_select_all() override;
     virtual void do_unselect_all() override;
 
diff --git a/vcl/inc/qt5/QtInstanceTreeView.hxx 
b/vcl/inc/qt5/QtInstanceTreeView.hxx
index 3e9ee8dc5633..050ec3d77a0c 100644
--- a/vcl/inc/qt5/QtInstanceTreeView.hxx
+++ b/vcl/inc/qt5/QtInstanceTreeView.hxx
@@ -77,6 +77,7 @@ public:
     virtual void do_scroll_to_row(int nRow) override;
     virtual bool is_selected(int nPos) const override;
     virtual int get_cursor_index() const override;
+    using QtInstanceItemView::do_set_cursor;
     virtual void do_set_cursor(int pos) override;
 
     virtual int find_text(const OUString& rText) const override;
@@ -86,7 +87,6 @@ public:
     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;
-    virtual void do_set_cursor(const weld::TreeIter& rIter) 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 ee3ed59d94f8..faaefa89b343 100644
--- a/vcl/qt5/QtInstanceIconView.cxx
+++ b/vcl/qt5/QtInstanceIconView.cxx
@@ -219,15 +219,6 @@ bool QtInstanceIconView::get_cursor(weld::TreeIter*) const
     return false;
 }
 
-void QtInstanceIconView::do_set_cursor(const weld::TreeIter& rIter)
-{
-    SolarMutexGuard g;
-
-    GetQtInstance().RunInMainThread([&] {
-        m_pSelectionModel->setCurrentIndex(modelIndex(rIter), 
QItemSelectionModel::NoUpdate);
-    });
-}
-
 OUString QtInstanceIconView::get_id(const weld::TreeIter& rIter) const
 {
     SolarMutexGuard g;
diff --git a/vcl/qt5/QtInstanceItemView.cxx b/vcl/qt5/QtInstanceItemView.cxx
index 1971c310a473..9ec91e19244c 100644
--- a/vcl/qt5/QtInstanceItemView.cxx
+++ b/vcl/qt5/QtInstanceItemView.cxx
@@ -62,6 +62,13 @@ std::unique_ptr<weld::TreeIter> 
QtInstanceItemView::get_iterator(int nPos) const
     return {};
 }
 
+void QtInstanceItemView::do_set_cursor(const weld::TreeIter& rIter)
+{
+    SolarMutexGuard g;
+
+    GetQtInstance().RunInMainThread([&] { 
getItemView().setCurrentIndex(modelIndex(rIter)); });
+}
+
 void QtInstanceItemView::do_select_all()
 {
     SolarMutexGuard g;
diff --git a/vcl/qt5/QtInstanceTreeView.cxx b/vcl/qt5/QtInstanceTreeView.cxx
index 3eee457463c5..ae3d982a08cb 100644
--- a/vcl/qt5/QtInstanceTreeView.cxx
+++ b/vcl/qt5/QtInstanceTreeView.cxx
@@ -370,13 +370,6 @@ bool QtInstanceTreeView::get_cursor(weld::TreeIter* pIter) 
const
     return bRet;
 }
 
-void QtInstanceTreeView::do_set_cursor(const weld::TreeIter& rIter)
-{
-    SolarMutexGuard g;
-
-    GetQtInstance().RunInMainThread([&] { 
m_pTreeView->setCurrentIndex(modelIndex(rIter)); });
-}
-
 bool QtInstanceTreeView::iter_previous_sibling(weld::TreeIter& rIter) const
 {
     QtInstanceTreeIter& rQtIter = static_cast<QtInstanceTreeIter&>(rIter);
commit 2c178721caa037951f8dab2b865856c8f2849d25
Author:     Michael Weghorn <[email protected]>
AuthorDate: Fri Dec 19 23:39:07 2025 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Sat Dec 20 06:47:43 2025 +0100

    weld: Move iter-based set_cursor to weld::ItemView base
    
    Both, weld::TreeView and weld::ItemView have such a method.
    Move it to the base class.
    
    Change-Id: I54d462a0c45b2a4b3669e2c74cde60747ba84ec8
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195943
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <[email protected]>

diff --git a/include/vcl/weld/IconView.hxx b/include/vcl/weld/IconView.hxx
index fadb1a1dd742..9647ab20756e 100644
--- a/include/vcl/weld/IconView.hxx
+++ b/include/vcl/weld/IconView.hxx
@@ -54,7 +54,6 @@ protected:
                            TreeIter* pRet)
         = 0;
     virtual void do_remove(int pos) = 0;
-    virtual void do_set_cursor(const TreeIter& rIter) = 0;
     virtual void do_scroll_to_item(const TreeIter& rIter) = 0;
 
 public:
@@ -138,13 +137,6 @@ public:
 
     std::unique_ptr<weld::TreeIter> get_item_at_pos(const Point& rPos);
 
-    void set_cursor(const TreeIter& rIter)
-    {
-        disable_notify_events();
-        do_set_cursor(rIter);
-        enable_notify_events();
-    }
-
     virtual OUString get_id(const TreeIter& rIter) const = 0;
     virtual OUString get_text(const TreeIter& rIter) const = 0;
 
diff --git a/include/vcl/weld/ItemView.hxx b/include/vcl/weld/ItemView.hxx
index 2ad2e7c81192..37f4db46ca65 100644
--- a/include/vcl/weld/ItemView.hxx
+++ b/include/vcl/weld/ItemView.hxx
@@ -20,6 +20,8 @@ class VCL_DLLPUBLIC ItemView : virtual public Widget
     OUString m_sSavedValue;
 
 protected:
+    virtual void do_set_cursor(const TreeIter& rIter) = 0;
+
     virtual void do_select(const TreeIter& rIter) = 0;
     virtual void do_unselect(const TreeIter& rIter) = 0;
 
@@ -43,7 +45,9 @@ public:
     virtual OUString get_selected_text() const = 0;
 
     virtual bool get_selected(TreeIter* pIter) const = 0;
+
     virtual bool get_cursor(TreeIter* pIter) const = 0;
+    void set_cursor(const TreeIter& rIter);
 
     // Don't select when frozen, select after thaw. Note selection doesn't 
survive a freeze.
     void select(int pos);
diff --git a/include/vcl/weld/TreeView.hxx b/include/vcl/weld/TreeView.hxx
index 572c06d69fd3..0fb38cc095ae 100644
--- a/include/vcl/weld/TreeView.hxx
+++ b/include/vcl/weld/TreeView.hxx
@@ -131,8 +131,8 @@ protected:
     virtual void do_insert_separator(int pos, const OUString& rId) = 0;
     virtual void do_remove(int pos) = 0;
     virtual void do_scroll_to_row(int row) = 0;
+    using weld::ItemView::do_set_cursor;
     virtual void do_set_cursor(int pos) = 0;
-    virtual void do_set_cursor(const TreeIter& rIter) = 0;
     virtual void do_remove(const TreeIter& rIter) = 0;
     virtual void do_scroll_to_row(const TreeIter& rIter) = 0;
     virtual void do_set_children_on_demand(const TreeIter& rIter, bool 
bChildrenOnDemand) = 0;
@@ -272,6 +272,7 @@ public:
     virtual bool is_selected(int pos) const = 0;
     virtual int get_cursor_index() const = 0;
 
+    using weld::ItemView::set_cursor;
     void set_cursor(int pos)
     {
         disable_notify_events();
@@ -304,13 +305,6 @@ public:
     //via iter
     virtual void copy_iterator(const TreeIter& rSource, TreeIter& rDest) const 
= 0;
 
-    void set_cursor(const TreeIter& rIter)
-    {
-        disable_notify_events();
-        do_set_cursor(rIter);
-        enable_notify_events();
-    }
-
     // 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
diff --git a/vcl/source/weld/ItemView.cxx b/vcl/source/weld/ItemView.cxx
index 9c260b94078a..710e9dd20f05 100644
--- a/vcl/source/weld/ItemView.cxx
+++ b/vcl/source/weld/ItemView.cxx
@@ -11,6 +11,13 @@
 
 namespace weld
 {
+void ItemView::set_cursor(const TreeIter& rIter)
+{
+    disable_notify_events();
+    do_set_cursor(rIter);
+    enable_notify_events();
+}
+
 void ItemView::select(int pos)
 {
     if (pos == -1 || (pos == 0 && n_children() == 0))

Reply via email to