From 7c365061a4eadedd5749a2feee92dfe02cd969c9 Mon Sep 17 00:00:00 2001
From: Kai Koehne <kai.koehne@nokia.com>
Date: Fri, 3 Sep 2010 12:40:39 +0200
Subject: [PATCH] QmlOutline: Ensure that element is always selected

Select parent element if the property isn't shown in outline (due to
filter).
---
 src/plugins/qmljseditor/qmljsoutline.cpp | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/plugins/qmljseditor/qmljsoutline.cpp b/src/plugins/qmljseditor/qmljsoutline.cpp
index 8618c22093e..e559e52b96a 100644
--- a/src/plugins/qmljseditor/qmljsoutline.cpp
+++ b/src/plugins/qmljseditor/qmljsoutline.cpp
@@ -145,8 +145,16 @@ void QmlJSOutlineWidget::updateSelectionInTree(const QModelIndex &index)
         return;
 
     m_blockCursorSync = true;
-    m_treeView->selectionModel()->select(m_filterModel->mapFromSource(index), QItemSelectionModel::ClearAndSelect);
-    m_treeView->scrollTo(m_filterModel->mapFromSource(index));
+
+    QModelIndex baseIndex = index;
+    QModelIndex filterIndex = m_filterModel->mapFromSource(baseIndex);
+    while (baseIndex.isValid() && !filterIndex.isValid()) { // Search for ancestor index actually shown
+        baseIndex = baseIndex.parent();
+        filterIndex = m_filterModel->mapFromSource(baseIndex);
+    }
+
+    m_treeView->selectionModel()->select(filterIndex, QItemSelectionModel::ClearAndSelect);
+    m_treeView->scrollTo(filterIndex);
     m_blockCursorSync = false;
 }
 
-- 
GitLab