diff --git a/src/plugins/projectexplorer/projecttree.cpp b/src/plugins/projectexplorer/projecttree.cpp
index 31ad0e9aa9eb3939e9a8043e10f59d38276edead..d8f5d6d562f846f21dc21d381096ead408aa1227 100644
--- a/src/plugins/projectexplorer/projecttree.cpp
+++ b/src/plugins/projectexplorer/projecttree.cpp
@@ -192,7 +192,9 @@ void ProjectTree::updateFromDocumentManager(bool invalidCurrentNode)
 
 void ProjectTree::update(Node *node, Project *project)
 {
-    if (project != m_currentProject) {
+    bool changedProject = project != m_currentProject;
+    bool changedNode = node != m_currentNode;
+    if (changedProject) {
         if (m_currentProject) {
             disconnect(m_currentProject, &Project::projectContextUpdated,
                        this, &ProjectTree::updateContext);
@@ -216,15 +218,17 @@ void ProjectTree::update(Node *node, Project *project)
                 Qt::UniqueConnection);
     }
 
-    if (node != m_currentNode) {
+    if (changedNode) {
         m_currentNode = node;
         emit currentNodeChanged(m_currentNode, project);
     }
 
-    emit currentProjectChanged(m_currentProject);
 
-    updateDefaultLocationForNewFiles();
-    updateContext();
+    if (changedProject) {
+        emit currentProjectChanged(m_currentProject);
+        updateDefaultLocationForNewFiles();
+        updateContext();
+    }
 }
 
 void ProjectTree::updateDefaultLocationForNewFiles()