diff --git a/src/plugins/cmakeprojectmanager/servermodereader.cpp b/src/plugins/cmakeprojectmanager/servermodereader.cpp index 796ec73886f..874c8f4f74c 100644 --- a/src/plugins/cmakeprojectmanager/servermodereader.cpp +++ b/src/plugins/cmakeprojectmanager/servermodereader.cpp @@ -735,7 +735,7 @@ void ServerModeReader::addHeaderNodes(ProjectNode *root, const QList const int count = seenHeaders.count(); seenHeaders.insert(fn->filePath()); if (seenHeaders.count() != count) { - auto node = new FileNode(*fn); + auto node = fn->clone(); node->setEnabled(false); headerNode->addNestedNode(node); } diff --git a/src/plugins/cmakeprojectmanager/tealeafreader.cpp b/src/plugins/cmakeprojectmanager/tealeafreader.cpp index b41176d1ed1..f4769fe0ceb 100644 --- a/src/plugins/cmakeprojectmanager/tealeafreader.cpp +++ b/src/plugins/cmakeprojectmanager/tealeafreader.cpp @@ -309,7 +309,7 @@ void TeaLeafReader::generateProjectTree(CMakeProjectNode *root, const QListfilePath().isChildOf(inc); }); }); - QList fileNodes = m_files + Utils::transform(missingHeaders, [](const FileNode *fn) { return new FileNode(*fn); }); + QList fileNodes = m_files + Utils::transform(missingHeaders, [](const FileNode *fn) { return fn->clone(); }); root->addNestedNodes(fileNodes, m_parameters.sourceDirectory); m_files.clear(); // Some of the FileNodes in files() were deleted! diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp index c12342b2d6e..1a1416ef672 100644 --- a/src/plugins/projectexplorer/projectnodes.cpp +++ b/src/plugins/projectexplorer/projectnodes.cpp @@ -287,6 +287,14 @@ FileNode::FileNode(const Utils::FileName &filePath, setPriority(DefaultFilePriority); } +FileNode *FileNode::clone() const +{ + auto fn = new FileNode(filePath(), fileType(), isGenerated(), line()); + fn->setEnabled(isEnabled()); + fn->setPriority(priority()); + return fn; +} + FileType FileNode::fileType() const { return m_fileType; diff --git a/src/plugins/projectexplorer/projectnodes.h b/src/plugins/projectexplorer/projectnodes.h index d82c02f53cb..5974e33ae80 100644 --- a/src/plugins/projectexplorer/projectnodes.h +++ b/src/plugins/projectexplorer/projectnodes.h @@ -168,7 +168,8 @@ class PROJECTEXPLORER_EXPORT FileNode : public Node { public: FileNode(const Utils::FileName &filePath, const FileType fileType, bool generated, int line = -1); - FileNode(const FileNode &other) : FileNode(other.filePath(), other.fileType(), true) {} + + FileNode *clone() const; FileType fileType() const; bool isGenerated() const;