Project: Remove duplicates from file list

Remove duplicate entries from list of project files. The duplicate
entries used to be visible in e.g. the locator.

Change-Id: I4a58ff11bd37ff39f4c9186ae89a2d384894bc1e
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Tobias Hunger
2017-04-20 14:49:10 +02:00
parent 2b80f9b89e
commit a1ae4affc2

View File

@@ -555,13 +555,19 @@ QStringList Project::files(Project::FilesMode fileMode,
if (!rootProjectNode()) if (!rootProjectNode())
return result; return result;
QSet<QString> alreadySeen;
rootProjectNode()->forEachNode([&](const FileNode *fn) { rootProjectNode()->forEachNode([&](const FileNode *fn) {
if (filter && !filter(fn)) if (filter && !filter(fn))
return; 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) if ((fileMode == AllFiles)
|| (fileMode == SourceFiles && !fn->isGenerated()) || (fileMode == SourceFiles && !fn->isGenerated())
|| (fileMode == GeneratedFiles && fn->isGenerated())) || (fileMode == GeneratedFiles && fn->isGenerated()))
result.append(fn->filePath().toString()); result.append(path);
}); });
return result; return result;
} }