From 95bd5b0d68500b82594af8e41a21c1ab83218051 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Sun, 15 Oct 2017 20:46:47 +0200 Subject: [PATCH] ProjectTree: Fix soft assert Fix soft assert when accessing the lone project file node in a project that failed to parse. Change-Id: I73d9b0012292dd5516a0a9c81cdc4003eebf2a92 Reviewed-by: Tim Jenssen --- src/plugins/projectexplorer/projectmodels.cpp | 2 ++ src/plugins/projectexplorer/projectnodes.cpp | 6 ++++++ src/plugins/projectexplorer/projectnodes.h | 2 ++ 3 files changed, 10 insertions(+) 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; };