forked from qt-creator/qt-creator
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:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user