diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index d6b4c262bb9..95fb74f021c 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -156,21 +156,28 @@ ProjectNode *QbsProject::rootProjectNode() const return m_rootProjectNode; } +static void collectFilesForProject(const qbs::ProjectData &project, QSet &result) +{ + result.insert(project.location().fileName()); + foreach (const qbs::ProductData &prd, project.products()) { + foreach (const qbs::GroupData &grp, prd.groups()) { + foreach (const QString &file, grp.allFilePaths()) + result.insert(file); + result.insert(grp.location().fileName()); + } + result.insert(prd.location().fileName()); + } + foreach (const qbs::ProjectData &subProject, project.subProjects()) + collectFilesForProject(subProject, result); +} + QStringList QbsProject::files(Project::FilesMode fileMode) const { Q_UNUSED(fileMode); + if (!m_rootProjectNode || !m_rootProjectNode->qbsProjectData().isValid()) + return QStringList(); QSet result; - if (m_rootProjectNode && m_rootProjectNode->qbsProjectData().isValid()) { - foreach (const qbs::ProductData &prd, m_rootProjectNode->qbsProjectData().allProducts()) { - foreach (const qbs::GroupData &grp, prd.groups()) { - foreach (const QString &file, grp.allFilePaths()) - result.insert(file); - result.insert(grp.location().fileName()); - } - result.insert(prd.location().fileName()); - } - result.insert(m_rootProjectNode->qbsProjectData().location().fileName()); - } + collectFilesForProject(m_rootProjectNode->qbsProjectData(), result); return result.toList(); }