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