diff --git a/src/plugins/cmakeprojectmanager/tealeafreader.cpp b/src/plugins/cmakeprojectmanager/tealeafreader.cpp index f4769fe0ceb..0bfcac1d68e 100644 --- a/src/plugins/cmakeprojectmanager/tealeafreader.cpp +++ b/src/plugins/cmakeprojectmanager/tealeafreader.cpp @@ -309,7 +309,16 @@ void TeaLeafReader::generateProjectTree(CMakeProjectNode *root, const QListfilePath().isChildOf(inc); }); }); - QList fileNodes = m_files + Utils::transform(missingHeaders, [](const FileNode *fn) { return fn->clone(); }); + // filter duplicates: + auto alreadySeen = QSet::fromList(Utils::transform(m_files, &FileNode::filePath)); + const QList unseenMissingHeaders = Utils::filtered(missingHeaders, [&alreadySeen](const FileNode *fn) { + const int count = alreadySeen.count(); + alreadySeen.insert(fn->filePath()); + return (alreadySeen.count() != count); + }); + + const QList fileNodes = m_files + + Utils::transform(unseenMissingHeaders, [](const FileNode *fn) { return fn->clone(); }); root->addNestedNodes(fileNodes, m_parameters.sourceDirectory); m_files.clear(); // Some of the FileNodes in files() were deleted!