diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp index d2f54d02bea..325c5f1efbc 100644 --- a/src/plugins/projectexplorer/projectnodes.cpp +++ b/src/plugins/projectexplorer/projectnodes.cpp @@ -957,52 +957,22 @@ QString SessionNode::addFileFilter() const return QString::fromLatin1("*.c; *.cc; *.cpp; *.cp; *.cxx; *.c++; *.h; *.hh; *.hpp; *.hxx;"); } -void SessionNode::addProjectNodes(const QList &projectNodes) +void SessionNode::addProjectNode(ProjectNode *projectNode) { - if (!projectNodes.isEmpty()) { - QList folderNodes; - foreach (ProjectNode *projectNode, projectNodes) - folderNodes << projectNode; + QTC_ASSERT(!projectNode->parentFolderNode(), + qDebug("Project node has already a parent folder")); + projectNode->setParentFolderNode(this); + m_folderNodes.append(projectNode); + m_projectNodes.append(projectNode); - foreach (ProjectNode *project, projectNodes) { - QTC_ASSERT(!project->parentFolderNode(), - qDebug("Project node has already a parent folder")); - project->setParentFolderNode(this); - m_folderNodes.append(project); - m_projectNodes.append(project); - } - - Utils::sort(m_folderNodes); - Utils::sort(m_projectNodes); - } + Utils::sort(m_folderNodes); + Utils::sort(m_projectNodes); } -void SessionNode::removeProjectNodes(const QList &projectNodes) +void SessionNode::removeProjectNode(ProjectNode *projectNode) { - if (!projectNodes.isEmpty()) { - QList toRemove; - foreach (ProjectNode *projectNode, projectNodes) - toRemove << projectNode; - - Utils::sort(toRemove); - auto toRemoveIter = toRemove.constBegin(); - auto folderIter = m_folderNodes.begin(); - auto projectIter = m_projectNodes.begin(); - for (; toRemoveIter != toRemove.constEnd(); ++toRemoveIter) { - while (*projectIter != *toRemoveIter) { - ++projectIter; - QTC_ASSERT(projectIter != m_projectNodes.end(), - qDebug("Project to remove is not part of specified folder!")); - } - while (*folderIter != *toRemoveIter) { - ++folderIter; - QTC_ASSERT(folderIter != m_folderNodes.end(), - qDebug("Project to remove is not part of specified folder!")); - } - projectIter = m_projectNodes.erase(projectIter); - folderIter = m_folderNodes.erase(folderIter); - } - } + m_folderNodes.removeOne(projectNode); + m_projectNodes.removeOne(projectNode); } } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/projectnodes.h b/src/plugins/projectexplorer/projectnodes.h index 99e4b2ac823..a9f6498a02b 100644 --- a/src/plugins/projectexplorer/projectnodes.h +++ b/src/plugins/projectexplorer/projectnodes.h @@ -325,26 +325,25 @@ private: // Documentation inside. class PROJECTEXPLORER_EXPORT SessionNode : public FolderNode { - friend class SessionManager; public: SessionNode(); - - QList supportedActions(Node *node) const override; QList projectNodes() const; - QString addFileFilter() const override; - void accept(NodesVisitor *visitor) override; - bool showInSimpleTree() const override; +private: + QList supportedActions(Node *node) const final; + QString addFileFilter() const final; + void accept(NodesVisitor *visitor) final; + + bool showInSimpleTree() const final; void projectDisplayNameChanged(Node *node); SessionNode *asSessionNode() final { return this; } const SessionNode *asSessionNode() const final { return this; } -protected: - void addProjectNodes(const QList &projectNodes); - void removeProjectNodes(const QList &projectNodes); + friend class SessionManager; + void addProjectNode(ProjectNode *projectNode); + void removeProjectNode(ProjectNode *projectNode); -private: QList m_projectNodes; }; diff --git a/src/plugins/projectexplorer/session.cpp b/src/plugins/projectexplorer/session.cpp index 42b36aca245..ffa76ed2a66 100644 --- a/src/plugins/projectexplorer/session.cpp +++ b/src/plugins/projectexplorer/session.cpp @@ -381,7 +381,7 @@ void SessionManager::addProject(Project *pro) QTC_ASSERT(!d->m_projects.contains(pro), return); d->m_projects.append(pro); - d->m_sessionNode.addProjectNodes({ pro->rootProjectNode() }); + d->m_sessionNode.addProjectNode(pro->rootProjectNode()); connect(pro, &Project::fileListChanged, m_instance, &SessionManager::clearProjectFileCache); @@ -738,7 +738,7 @@ void SessionManager::removeProjects(QList remove) m_instance, &SessionManager::clearProjectFileCache); d->m_projectFileCache.remove(pro); - d->m_sessionNode.removeProjectNodes({ pro->rootProjectNode() }); + d->m_sessionNode.removeProjectNode(pro->rootProjectNode()); emit m_instance->projectRemoved(pro); delete pro; }