diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp index 26f76064476..6ba1341d4ed 100644 --- a/src/plugins/projectexplorer/projectnodes.cpp +++ b/src/plugins/projectexplorer/projectnodes.cpp @@ -514,6 +514,17 @@ void FolderNode::forEachGenericNode(const std::function &genericTa } } +void FolderNode::forEachProjectNode(const std::function &task) const +{ + if (const ProjectNode *projectNode = asProjectNode()) + task(projectNode); + + for (const std::unique_ptr &n : m_nodes) { + if (FolderNode *fn = n->asFolderNode()) + fn->forEachProjectNode(task); + } +} + const QList FolderNode::nodes() const { return Utils::toRawPointer(m_nodes); diff --git a/src/plugins/projectexplorer/projectnodes.h b/src/plugins/projectexplorer/projectnodes.h index 8f8f9fd1bf0..310b1a461f5 100644 --- a/src/plugins/projectexplorer/projectnodes.h +++ b/src/plugins/projectexplorer/projectnodes.h @@ -216,6 +216,7 @@ public: const std::function &folderTask = {}, const std::function &folderFilterTask = {}) const; void forEachGenericNode(const std::function &genericTask) const; + void forEachProjectNode(const std::function &genericTask) const; const QList nodes() const; QList fileNodes() const; FileNode *fileNode(const Utils::FileName &file) const;