From e8c57c98d6f6af1abb70c98ad886f0af79103c0c Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Fri, 28 Jul 2017 14:09:52 +0200 Subject: [PATCH] ProjectTree: keep lastFocusedProjectTreeWidget to get currentNode Also remove currentNode checks from updateFromDocumentManager() We already checked for focus in the update() method. Change-Id: Id1bc28ce442b5b56597a675516ceea4fbc1801de Reviewed-by: Tobias Hunger --- src/plugins/projectexplorer/projecttree.cpp | 23 +++++++++++---------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/plugins/projectexplorer/projecttree.cpp b/src/plugins/projectexplorer/projecttree.cpp index ab3c95da9c8..4d6c596377a 100644 --- a/src/plugins/projectexplorer/projecttree.cpp +++ b/src/plugins/projectexplorer/projecttree.cpp @@ -131,8 +131,13 @@ void ProjectTree::nodeChanged(ProjectTreeWidget *widget) void ProjectTree::update() { ProjectTreeWidget *focus = m_focusForContextMenu; - if (!focus) + static QPointer lastFocusedProjectTreeWidget; + if (!focus) { focus = Utils::findOrDefault(m_projectTreeWidgets, &ProjectTree::hasFocus); + lastFocusedProjectTreeWidget = focus; + } + if (!focus) + focus = lastFocusedProjectTreeWidget; if (focus) updateFromProjectTreeWidget(focus); @@ -150,16 +155,12 @@ void ProjectTree::updateFromProjectTreeWidget(ProjectTreeWidget *widget) void ProjectTree::updateFromDocumentManager() { - Core::IDocument *document = Core::EditorManager::currentDocument(); - const FileName fileName = document ? document->filePath() : FileName(); - - Node *currentNode = nullptr; - if (m_currentNode && m_currentNode->filePath() == fileName) - currentNode = m_currentNode; - else - currentNode = ProjectTreeWidget::nodeForFile(fileName); - - updateFromNode(currentNode); + if (Core::IDocument *document = Core::EditorManager::currentDocument()) { + const FileName fileName = document->filePath(); + updateFromNode(ProjectTreeWidget::nodeForFile(fileName)); + } else { + updateFromNode(nullptr); + } } void ProjectTree::updateFromNode(Node *node)