diff --git a/src/plugins/projectexplorer/projecttree.cpp b/src/plugins/projectexplorer/projecttree.cpp index ab3c95da9c8fece799eccd5db0b9bd23f49b864e..4d6c596377a34fbbd3b738a3ee75c7982cf19bc0 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)