diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp index bb62390fe40..cd8e435f455 100644 --- a/src/plugins/projectexplorer/project.cpp +++ b/src/plugins/projectexplorer/project.cpp @@ -555,13 +555,19 @@ QStringList Project::files(Project::FilesMode fileMode, if (!rootProjectNode()) return result; + QSet alreadySeen; rootProjectNode()->forEachNode([&](const FileNode *fn) { if (filter && !filter(fn)) return; + const QString path = fn->filePath().toString(); + const int count = alreadySeen.count(); + alreadySeen.insert(path); + if (count == alreadySeen.count()) + return; // skip duplicates if ((fileMode == AllFiles) || (fileMode == SourceFiles && !fn->isGenerated()) || (fileMode == GeneratedFiles && fn->isGenerated())) - result.append(fn->filePath().toString()); + result.append(path); }); return result; }