vcl/inc/qt5/QtInstanceTreeView.hxx |    2 +-
 vcl/qt5/QtInstanceTreeView.cxx     |   22 +++++++++++++++++++---
 2 files changed, 20 insertions(+), 4 deletions(-)

New commits:
commit 05c8f91d5abf79f3591b5979ae01a17f2b153880
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Sat Nov 30 02:17:21 2024 +0100
Commit:     Michael Weghorn <m.wegh...@posteo.de>
CommitDate: Sat Nov 30 09:41:05 2024 +0100

    tdf#130857 qt weld: Implement more TreeView methods wrt selection
    
    Change-Id: I3479b138a0986f1fbac7745e575e318bf63c1911
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177576
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>
    Tested-by: Jenkins

diff --git a/vcl/inc/qt5/QtInstanceTreeView.hxx 
b/vcl/inc/qt5/QtInstanceTreeView.hxx
index 04cb4ae87337..a344c365a7c4 100644
--- a/vcl/inc/qt5/QtInstanceTreeView.hxx
+++ b/vcl/inc/qt5/QtInstanceTreeView.hxx
@@ -41,7 +41,7 @@ public:
 
     virtual int get_selected_index() const override;
     virtual void select(int nPos) override;
-    virtual void unselect(int pos) override;
+    virtual void unselect(int nPos) override;
     virtual void remove(int pos) override;
     virtual OUString get_text(int nRow, int nCol = -1) const override;
     virtual void set_text(int row, const OUString& rText, int col = -1) 
override;
diff --git a/vcl/qt5/QtInstanceTreeView.cxx b/vcl/qt5/QtInstanceTreeView.cxx
index 451987aaba1c..4211307c36da 100644
--- a/vcl/qt5/QtInstanceTreeView.cxx
+++ b/vcl/qt5/QtInstanceTreeView.cxx
@@ -113,8 +113,18 @@ void QtInstanceTreeView::set_clicks_to_toggle(int) { 
assert(false && "Not implem
 
 int QtInstanceTreeView::get_selected_index() const
 {
-    assert(false && "Not implemented yet");
-    return -1;
+    SolarMutexGuard g;
+
+    int nIndex = -1;
+    GetQtInstance().RunInMainThread([&] {
+        const QModelIndexList aSelectedIndexes = 
m_pSelectionModel->selectedIndexes();
+        if (aSelectedIndexes.empty())
+            return;
+
+        nIndex = aSelectedIndexes.first().row();
+    });
+
+    return nIndex;
 }
 
 void QtInstanceTreeView::select(int nPos)
@@ -124,7 +134,13 @@ void QtInstanceTreeView::select(int nPos)
         [&] { m_pSelectionModel->select(m_pModel->index(nPos, 0), 
QItemSelectionModel::Select); });
 }
 
-void QtInstanceTreeView::unselect(int) { assert(false && "Not implemented 
yet"); }
+void QtInstanceTreeView::unselect(int nPos)
+{
+    SolarMutexGuard g;
+    GetQtInstance().RunInMainThread([&] {
+        m_pSelectionModel->select(m_pModel->index(nPos, 0), 
QItemSelectionModel::Deselect);
+    });
+}
 
 void QtInstanceTreeView::remove(int) { assert(false && "Not implemented yet"); 
}
 

Reply via email to