vcl/inc/qt5/QtInstanceIconView.hxx |    3 -
 vcl/inc/qt5/QtInstanceItemView.hxx |    9 +++++
 vcl/inc/qt5/QtInstanceTreeView.hxx |    3 -
 vcl/qt5/QtInstanceIconView.cxx     |   19 ------------
 vcl/qt5/QtInstanceItemView.cxx     |   56 ++++++++++++++++++++++++++++++++++++-
 vcl/qt5/QtInstanceTreeView.cxx     |   47 -------------------------------
 6 files changed, 63 insertions(+), 74 deletions(-)

New commits:
commit 51bd210886cd66dd8ddad4bf5b7d317c98b2b3c1
Author:     Michael Weghorn <[email protected]>
AuthorDate: Sat Dec 20 11:34:01 2025 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Sat Dec 20 16:47:43 2025 +0100

    tdf#130857 qt weld: Deduplicate weld::ItemView::do_select impls
    
    Move the QtInstanceTreeView implementation to the
    QtInstanceItemView base class and reuse for
    QtInstanceIconView as well.
    
    While the IconView only has a single column anyways,
    the extra flags set in the QtInstanceTreeView
    implementation are fine.
    
    Change-Id: Ic5c46e68a52e7eea9d703cb5c9f3af3d78f7f3ad
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195964
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <[email protected]>

diff --git a/vcl/inc/qt5/QtInstanceIconView.hxx 
b/vcl/inc/qt5/QtInstanceIconView.hxx
index e05d7e16629e..406bc693276b 100644
--- a/vcl/inc/qt5/QtInstanceIconView.hxx
+++ b/vcl/inc/qt5/QtInstanceIconView.hxx
@@ -44,7 +44,6 @@ public:
 
     virtual OUString get_selected_text() const override;
 
-    virtual void do_select(const weld::TreeIter& rIter) override;
     virtual void do_unselect(const weld::TreeIter& rIter) override;
 
     virtual void set_image(int nPos, VirtualDevice& rDevice) override;
diff --git a/vcl/inc/qt5/QtInstanceItemView.hxx 
b/vcl/inc/qt5/QtInstanceItemView.hxx
index 41613af54501..bfe9feb2672a 100644
--- a/vcl/inc/qt5/QtInstanceItemView.hxx
+++ b/vcl/inc/qt5/QtInstanceItemView.hxx
@@ -29,6 +29,8 @@ protected:
 
     virtual void do_set_cursor(const weld::TreeIter& rIter) override;
 
+    virtual void do_select(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 a85969b02e2b..a6a6296e25bb 100644
--- a/vcl/inc/qt5/QtInstanceTreeView.hxx
+++ b/vcl/inc/qt5/QtInstanceTreeView.hxx
@@ -93,7 +93,6 @@ public:
     virtual bool iter_has_child(const weld::TreeIter& rIter) const override;
     virtual int iter_n_children(const weld::TreeIter& rIter) const override;
     virtual void do_remove(const weld::TreeIter& rIter) override;
-    virtual void do_select(const weld::TreeIter& rIter) override;
     virtual void do_unselect(const weld::TreeIter& rIter) override;
     virtual void set_extra_row_indent(const weld::TreeIter& rIter, int 
nIndentLevel) override;
     virtual void set_text(const weld::TreeIter& rIter, const OUString& rStr,
diff --git a/vcl/qt5/QtInstanceIconView.cxx b/vcl/qt5/QtInstanceIconView.cxx
index dc0e0ce7b872..d1c1159b33b5 100644
--- a/vcl/qt5/QtInstanceIconView.cxx
+++ b/vcl/qt5/QtInstanceIconView.cxx
@@ -128,13 +128,6 @@ OUString QtInstanceIconView::get_selected_text() const
     return OUString();
 }
 
-void QtInstanceIconView::do_select(const weld::TreeIter& rIter)
-{
-    SolarMutexGuard g;
-    GetQtInstance().RunInMainThread(
-        [&] { m_pSelectionModel->select(modelIndex(rIter), 
QItemSelectionModel::Select); });
-}
-
 void QtInstanceIconView::do_unselect(const weld::TreeIter& rIter)
 {
     SolarMutexGuard g;
diff --git a/vcl/qt5/QtInstanceItemView.cxx b/vcl/qt5/QtInstanceItemView.cxx
index b842a73cd10d..c9b0d2e712a6 100644
--- a/vcl/qt5/QtInstanceItemView.cxx
+++ b/vcl/qt5/QtInstanceItemView.cxx
@@ -124,6 +124,20 @@ void QtInstanceItemView::do_set_cursor(const 
weld::TreeIter& rIter)
     GetQtInstance().RunInMainThread([&] { 
getItemView().setCurrentIndex(modelIndex(rIter)); });
 }
 
+void QtInstanceItemView::do_select(const weld::TreeIter& rIter)
+{
+    SolarMutexGuard g;
+
+    GetQtInstance().RunInMainThread([&] {
+        QItemSelectionModel::SelectionFlags eFlags
+            = QItemSelectionModel::Select | QItemSelectionModel::Rows;
+        if (getItemView().selectionMode() == 
QAbstractItemView::SingleSelection)
+            eFlags |= QItemSelectionModel::Clear;
+
+        getSelectionModel().select(modelIndex(rIter), eFlags);
+    });
+}
+
 void QtInstanceItemView::do_select_all()
 {
     SolarMutexGuard g;
diff --git a/vcl/qt5/QtInstanceTreeView.cxx b/vcl/qt5/QtInstanceTreeView.cxx
index 13f740bc21c1..c9a11cac8fe5 100644
--- a/vcl/qt5/QtInstanceTreeView.cxx
+++ b/vcl/qt5/QtInstanceTreeView.cxx
@@ -415,20 +415,6 @@ void QtInstanceTreeView::do_remove(const weld::TreeIter& 
rIter)
     });
 }
 
-void QtInstanceTreeView::do_select(const weld::TreeIter& rIter)
-{
-    SolarMutexGuard g;
-
-    GetQtInstance().RunInMainThread([&] {
-        QItemSelectionModel::SelectionFlags eFlags
-            = QItemSelectionModel::Select | QItemSelectionModel::Rows;
-        if (m_pTreeView->selectionMode() == QAbstractItemView::SingleSelection)
-            eFlags |= QItemSelectionModel::Clear;
-
-        m_pSelectionModel->select(modelIndex(rIter), eFlags);
-    });
-}
-
 void QtInstanceTreeView::do_unselect(const weld::TreeIter& rIter)
 {
     SolarMutexGuard g;
commit 92a20e6bac4904e27b7e3ec206f7bf46f1cfbf52
Author:     Michael Weghorn <[email protected]>
AuthorDate: Sat Dec 20 11:27:44 2025 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Sat Dec 20 16:47:37 2025 +0100

    tdf#130857 qt weld: Implement QtInstanceItemView::get_selected
    
    Move the QtInstanceTreeView::get_selected logic
    to QtInstanceItemView, so it can be reused
    for QtInstanceIconView as well.
    
    Change-Id: I5ecb4f4fb071a2301fdbd553bdc9ff53f3c1c203
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195963
    Reviewed-by: Michael Weghorn <[email protected]>
    Tested-by: Jenkins

diff --git a/vcl/inc/qt5/QtInstanceIconView.hxx 
b/vcl/inc/qt5/QtInstanceIconView.hxx
index 721174150315..e05d7e16629e 100644
--- a/vcl/inc/qt5/QtInstanceIconView.hxx
+++ b/vcl/inc/qt5/QtInstanceIconView.hxx
@@ -54,7 +54,6 @@ public:
     virtual void do_remove(int pos) override;
     virtual tools::Rectangle get_rect(const weld::TreeIter& rIter) const 
override;
 
-    virtual bool get_selected(weld::TreeIter* pIter) 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 d67a632250b6..41613af54501 100644
--- a/vcl/inc/qt5/QtInstanceItemView.hxx
+++ b/vcl/inc/qt5/QtInstanceItemView.hxx
@@ -52,6 +52,8 @@ public:
     using weld::ItemView::set_id;
     virtual void set_id(const weld::TreeIter& rIter, const OUString& rId) 
override;
 
+    virtual bool get_selected(weld::TreeIter* pIter) const override;
+
     virtual bool get_cursor(weld::TreeIter* pIter) const override;
 
 protected:
@@ -62,6 +64,7 @@ protected:
 
 private:
     QAbstractItemView& getItemView() const;
+    QItemSelectionModel& getSelectionModel() const;
 };
 
 /* 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 e7d118d53df0..a85969b02e2b 100644
--- a/vcl/inc/qt5/QtInstanceTreeView.hxx
+++ b/vcl/inc/qt5/QtInstanceTreeView.hxx
@@ -82,7 +82,6 @@ public:
     virtual int find_id(const OUString& rId) 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 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 3276b32e1166..dc0e0ce7b872 100644
--- a/vcl/qt5/QtInstanceIconView.cxx
+++ b/vcl/qt5/QtInstanceIconView.cxx
@@ -192,12 +192,6 @@ tools::Rectangle QtInstanceIconView::get_rect(const 
weld::TreeIter&) const
     return tools::Rectangle();
 }
 
-bool QtInstanceIconView::get_selected(weld::TreeIter*) const
-{
-    assert(false && "Not implemented yet");
-    return false;
-}
-
 OUString QtInstanceIconView::get_text(const weld::TreeIter& rIter) const
 {
     SolarMutexGuard g;
diff --git a/vcl/qt5/QtInstanceItemView.cxx b/vcl/qt5/QtInstanceItemView.cxx
index f453997d0dcf..b842a73cd10d 100644
--- a/vcl/qt5/QtInstanceItemView.cxx
+++ b/vcl/qt5/QtInstanceItemView.cxx
@@ -84,6 +84,23 @@ void QtInstanceItemView::set_id(const weld::TreeIter& rIter, 
const OUString& rId
         [&] { m_rModel.setData(modelIndex(rIter), toQString(rId), ROLE_ID); });
 }
 
+bool QtInstanceItemView::get_selected(weld::TreeIter* pIter) const
+{
+    SolarMutexGuard g;
+
+    bool bHasSelection = false;
+    GetQtInstance().RunInMainThread([&] {
+        const QModelIndexList aSelectedIndexes = 
getSelectionModel().selectedIndexes();
+        if (aSelectedIndexes.empty())
+            return;
+
+        bHasSelection = true;
+        if (pIter)
+            
static_cast<QtInstanceTreeIter*>(pIter)->setModelIndex(aSelectedIndexes.first());
+    });
+    return bHasSelection;
+}
+
 bool QtInstanceItemView::get_cursor(weld::TreeIter* pIter) const
 {
     SolarMutexGuard g;
@@ -150,4 +167,11 @@ QAbstractItemView& QtInstanceItemView::getItemView() const
     return *pView;
 }
 
+QItemSelectionModel& QtInstanceItemView::getSelectionModel() const
+{
+    QItemSelectionModel* pSelectionModel = getItemView().selectionModel();
+    assert(pSelectionModel);
+    return *pSelectionModel;
+}
+
 /* 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 dcc5a8aa72ad..13f740bc21c1 100644
--- a/vcl/qt5/QtInstanceTreeView.cxx
+++ b/vcl/qt5/QtInstanceTreeView.cxx
@@ -314,23 +314,6 @@ void QtInstanceTreeView::copy_iterator(const 
weld::TreeIter& rSource, weld::Tree
     static_cast<QtInstanceTreeIter&>(rDest).setModelIndex(aModelIndex);
 }
 
-bool QtInstanceTreeView::get_selected(weld::TreeIter* pIter) const
-{
-    SolarMutexGuard g;
-
-    bool bHasSelection = false;
-    GetQtInstance().RunInMainThread([&] {
-        const QModelIndexList aSelectedIndexes = 
m_pSelectionModel->selectedIndexes();
-        if (aSelectedIndexes.empty())
-            return;
-
-        bHasSelection = true;
-        if (pIter)
-            
static_cast<QtInstanceTreeIter*>(pIter)->setModelIndex(aSelectedIndexes.first());
-    });
-    return bHasSelection;
-}
-
 bool QtInstanceTreeView::iter_previous_sibling(weld::TreeIter& rIter) const
 {
     QtInstanceTreeIter& rQtIter = static_cast<QtInstanceTreeIter&>(rIter);
commit f7694a4ba82fec1a7797e91c70097ec58fd8ff20
Author:     Michael Weghorn <[email protected]>
AuthorDate: Sat Dec 20 11:19:37 2025 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Sat Dec 20 16:47:31 2025 +0100

    tdf#130857 qt weld: Move ItemView::get_cursor impl to base
    
    The QtInstanceTreeView::get_cursor logic is appropriate for
    QtInstanceIconView as well.
    
    Move it to the base class and drop overrides in
    subclasses.
    
    Change-Id: I3d1156ada97f1fd8a7ff38d8b2d21a762cf066eb
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195962
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <[email protected]>

diff --git a/vcl/inc/qt5/QtInstanceIconView.hxx 
b/vcl/inc/qt5/QtInstanceIconView.hxx
index 6501665d874e..721174150315 100644
--- a/vcl/inc/qt5/QtInstanceIconView.hxx
+++ b/vcl/inc/qt5/QtInstanceIconView.hxx
@@ -55,7 +55,6 @@ public:
     virtual tools::Rectangle get_rect(const weld::TreeIter& rIter) const 
override;
 
     virtual bool get_selected(weld::TreeIter* pIter) const override;
-    virtual bool get_cursor(weld::TreeIter* pIter) 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 e577196c3c51..d67a632250b6 100644
--- a/vcl/inc/qt5/QtInstanceItemView.hxx
+++ b/vcl/inc/qt5/QtInstanceItemView.hxx
@@ -52,6 +52,8 @@ public:
     using weld::ItemView::set_id;
     virtual void set_id(const weld::TreeIter& rIter, const OUString& rId) 
override;
 
+    virtual bool get_cursor(weld::TreeIter* pIter) const override;
+
 protected:
     QModelIndex modelIndex(int nRow, int nCol = 0,
                            const QModelIndex& rParentIndex = QModelIndex()) 
const;
@@ -59,7 +61,7 @@ protected:
     QtInstanceTreeIter treeIter(int nRow, const QModelIndex& rParentIndex = 
QModelIndex()) const;
 
 private:
-    QAbstractItemView& getItemView();
+    QAbstractItemView& getItemView() const;
 };
 
 /* 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 9b95c79c3efe..e7d118d53df0 100644
--- a/vcl/inc/qt5/QtInstanceTreeView.hxx
+++ b/vcl/inc/qt5/QtInstanceTreeView.hxx
@@ -83,7 +83,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 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 c9ebd12e5411..3276b32e1166 100644
--- a/vcl/qt5/QtInstanceIconView.cxx
+++ b/vcl/qt5/QtInstanceIconView.cxx
@@ -198,12 +198,6 @@ bool QtInstanceIconView::get_selected(weld::TreeIter*) 
const
     return false;
 }
 
-bool QtInstanceIconView::get_cursor(weld::TreeIter*) const
-{
-    assert(false && "Not implemented yet");
-    return false;
-}
-
 OUString QtInstanceIconView::get_text(const weld::TreeIter& rIter) const
 {
     SolarMutexGuard g;
diff --git a/vcl/qt5/QtInstanceItemView.cxx b/vcl/qt5/QtInstanceItemView.cxx
index 43ad906a2c78..f453997d0dcf 100644
--- a/vcl/qt5/QtInstanceItemView.cxx
+++ b/vcl/qt5/QtInstanceItemView.cxx
@@ -84,6 +84,22 @@ void QtInstanceItemView::set_id(const weld::TreeIter& rIter, 
const OUString& rId
         [&] { m_rModel.setData(modelIndex(rIter), toQString(rId), ROLE_ID); });
 }
 
+bool QtInstanceItemView::get_cursor(weld::TreeIter* pIter) const
+{
+    SolarMutexGuard g;
+
+    bool bRet = false;
+    GetQtInstance().RunInMainThread([&] {
+        const QModelIndex aCurrentIndex = getItemView().currentIndex();
+        QtInstanceTreeIter* pQtIter = static_cast<QtInstanceTreeIter*>(pIter);
+        if (pQtIter)
+            pQtIter->setModelIndex(aCurrentIndex);
+        bRet = aCurrentIndex.isValid();
+    });
+
+    return bRet;
+}
+
 void QtInstanceItemView::do_set_cursor(const weld::TreeIter& rIter)
 {
     SolarMutexGuard g;
@@ -127,7 +143,7 @@ QtInstanceTreeIter QtInstanceItemView::treeIter(int nRow, 
const QModelIndex& rPa
     return QtInstanceTreeIter(m_rModel.index(nRow, 0, rParentIndex));
 }
 
-QAbstractItemView& QtInstanceItemView::getItemView()
+QAbstractItemView& QtInstanceItemView::getItemView() const
 {
     QAbstractItemView* pView = qobject_cast<QAbstractItemView*>(getQWidget());
     assert(pView);
diff --git a/vcl/qt5/QtInstanceTreeView.cxx b/vcl/qt5/QtInstanceTreeView.cxx
index 8c590f3ad09d..dcc5a8aa72ad 100644
--- a/vcl/qt5/QtInstanceTreeView.cxx
+++ b/vcl/qt5/QtInstanceTreeView.cxx
@@ -331,22 +331,6 @@ bool QtInstanceTreeView::get_selected(weld::TreeIter* 
pIter) const
     return bHasSelection;
 }
 
-bool QtInstanceTreeView::get_cursor(weld::TreeIter* pIter) const
-{
-    SolarMutexGuard g;
-
-    bool bRet = false;
-    GetQtInstance().RunInMainThread([&] {
-        const QModelIndex aCurrentIndex = m_pTreeView->currentIndex();
-        QtInstanceTreeIter* pQtIter = static_cast<QtInstanceTreeIter*>(pIter);
-        if (pQtIter)
-            pQtIter->setModelIndex(aCurrentIndex);
-        bRet = aCurrentIndex.isValid();
-    });
-
-    return bRet;
-}
-
 bool QtInstanceTreeView::iter_previous_sibling(weld::TreeIter& rIter) const
 {
     QtInstanceTreeIter& rQtIter = static_cast<QtInstanceTreeIter&>(rIter);

Reply via email to