diff --git a/src/plugins/projectexplorer/projectmodels.cpp b/src/plugins/projectexplorer/projectmodels.cpp index 7d98cc4181f..bbecd98b808 100644 --- a/src/plugins/projectexplorer/projectmodels.cpp +++ b/src/plugins/projectexplorer/projectmodels.cpp @@ -210,6 +210,7 @@ void FlatModel::addOrRebuildProjectModel(Project *project) WrapperNode *container = nodeForProject(project); if (container) { container->removeChildren(); + project->containerNode()->removeAllChildren(); } else { container = new WrapperNode(project->containerNode()); rootItem()->insertOrderedChild(container, &compareProjectNames); @@ -224,6 +225,7 @@ void FlatModel::addOrRebuildProjectModel(Project *project) } if (container->childCount() == 0) { FileNode *projectFileNode = new FileNode(project->projectFilePath(), FileType::Project, false); + project->containerNode()->addNestedNode(projectFileNode); seen.insert(projectFileNode); container->appendChild(new WrapperNode(projectFileNode)); } diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp index 91ff23f5fac..cc01cb4b9e1 100644 --- a/src/plugins/projectexplorer/projectnodes.cpp +++ b/src/plugins/projectexplorer/projectnodes.cpp @@ -908,4 +908,10 @@ ProjectNode *ContainerNode::rootProjectNode() const return m_project->rootProjectNode(); } +void ContainerNode::removeAllChildren() +{ + qDeleteAll(m_nodes); + m_nodes.clear(); +} + } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/projectnodes.h b/src/plugins/projectexplorer/projectnodes.h index c039ccdfed9..ddd828ee97a 100644 --- a/src/plugins/projectexplorer/projectnodes.h +++ b/src/plugins/projectexplorer/projectnodes.h @@ -358,6 +358,8 @@ public: ProjectNode *rootProjectNode() const; Project *project() const { return m_project; } + void removeAllChildren(); + private: Project *m_project; };