From e8c57c98d6f6af1abb70c98ad886f0af79103c0c Mon Sep 17 00:00:00 2001
From: Tim Jenssen <tim.jenssen@qt.io>
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 <tobias.hunger@qt.io>
---
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<ProjectTreeWidget> 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)
--
GitLab