diff --git a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp index d368acd4567..c211fcc471b 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp +++ b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp @@ -209,7 +209,8 @@ void AutotoolsProject::makefileParsingFinished() auto newRoot = std::make_unique(projectDirectory()); for (const QString &f : m_files) { const Utils::FileName path = Utils::FileName::fromString(f); - newRoot->addNestedNode(new FileNode(path, FileNode::fileTypeForFileName(path), false)); + newRoot->addNestedNode(std::make_unique(path, FileNode::fileTypeForFileName(path), + false)); } setRootProjectNode(std::move(newRoot)); diff --git a/src/plugins/cmakeprojectmanager/servermodereader.cpp b/src/plugins/cmakeprojectmanager/servermodereader.cpp index e0d5f7ce7cf..eb6a71bbc1d 100644 --- a/src/plugins/cmakeprojectmanager/servermodereader.cpp +++ b/src/plugins/cmakeprojectmanager/servermodereader.cpp @@ -899,9 +899,9 @@ void ServerModeReader::addHeaderNodes(ProjectNode *root, const QList const int count = seenHeaders.count(); seenHeaders.insert(fn->filePath()); if (seenHeaders.count() != count) { - auto node = fn->clone(); + std::unique_ptr node(fn->clone()); node->setEnabled(false); - headerNode->addNestedNode(node); + headerNode->addNestedNode(std::move(node)); } } diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index 80e901fd0dc..10d8867b7e1 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -345,18 +345,19 @@ void GenericProject::refresh(RefreshOptions options) FileType fileType = FileType::Source; // ### FIXME if (f.endsWith(".qrc")) fileType = FileType::Resource; - newRoot->addNestedNode(new FileNode(Utils::FileName::fromString(f), fileType, false)); + newRoot->addNestedNode(std::make_unique(FileName::fromString(f), fileType, + false)); } - newRoot->addNestedNode(new FileNode(Utils::FileName::fromString(m_filesFileName), - FileType::Project, - /* generated = */ false)); - newRoot->addNestedNode(new FileNode(Utils::FileName::fromString(m_includesFileName), - FileType::Project, - /* generated = */ false)); - newRoot->addNestedNode(new FileNode(Utils::FileName::fromString(m_configFileName), - FileType::Project, - /* generated = */ false)); + newRoot->addNestedNode(std::make_unique(FileName::fromString(m_filesFileName), + FileType::Project, + /* generated = */ false)); + newRoot->addNestedNode(std::make_unique(FileName::fromString(m_includesFileName), + FileType::Project, + /* generated = */ false)); + newRoot->addNestedNode(std::make_unique(FileName::fromString(m_configFileName), + FileType::Project, + /* generated = */ false)); setRootProjectNode(std::move(newRoot)); } diff --git a/src/plugins/projectexplorer/projectmodels.cpp b/src/plugins/projectexplorer/projectmodels.cpp index 05accb7e530..87b2d8279f5 100644 --- a/src/plugins/projectexplorer/projectmodels.cpp +++ b/src/plugins/projectexplorer/projectmodels.cpp @@ -230,10 +230,11 @@ void FlatModel::addOrRebuildProjectModel(Project *project) trimEmptyDirectories(container); } if (container->childCount() == 0) { - FileNode *projectFileNode = new FileNode(project->projectFilePath(), FileType::Project, false); - project->containerNode()->addNestedNode(projectFileNode); - seen.insert(projectFileNode); - container->appendChild(new WrapperNode(projectFileNode)); + auto projectFileNode = std::make_unique(project->projectFilePath(), + FileType::Project, false); + seen.insert(projectFileNode.get()); + container->appendChild(new WrapperNode(projectFileNode.get())); + project->containerNode()->addNestedNode(std::move(projectFileNode)); } container->sortChildren(&sortWrapperNodes); diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp index da0eb991215..5c1ea64c09d 100644 --- a/src/plugins/projectexplorer/projectnodes.cpp +++ b/src/plugins/projectexplorer/projectnodes.cpp @@ -548,21 +548,23 @@ QList FolderNode::folderNodes() const return result; } -void FolderNode::addNestedNode(FileNode *fileNode, const Utils::FileName &overrideBaseDir, +void FolderNode::addNestedNode(std::unique_ptr &&fileNode, + const Utils::FileName &overrideBaseDir, const FolderNodeFactory &factory) { - // Get relative path to rootNode FolderNode *folder = recursiveFindOrCreateFolderNode(this, fileNode->filePath().parentDir(), overrideBaseDir, factory); - folder->addNode(fileNode); - + folder->addNode(std::move(fileNode)); } void FolderNode::addNestedNodes(const QList &files, const Utils::FileName &overrideBaseDir, const FolderNodeFactory &factory) { - for (FileNode *fn : files) - addNestedNode(fn, overrideBaseDir, factory); + for (FileNode *fileNode : files) { + FolderNode *folder = recursiveFindOrCreateFolderNode(this, fileNode->filePath().parentDir(), + overrideBaseDir, factory); + folder->addNode(fileNode); + } } // "Compress" a tree of foldernodes such that foldernodes with exactly one foldernode as a child diff --git a/src/plugins/projectexplorer/projectnodes.h b/src/plugins/projectexplorer/projectnodes.h index e2aa2940dde..db586ebd107 100644 --- a/src/plugins/projectexplorer/projectnodes.h +++ b/src/plugins/projectexplorer/projectnodes.h @@ -223,14 +223,14 @@ public: FileNode *fileNode(const Utils::FileName &file) const; QList folderNodes() const; using FolderNodeFactory = std::function(const Utils::FileName &)>; - void addNestedNodes(const QList &files, const Utils::FileName &overrideBaseDir = Utils::FileName(), - const FolderNodeFactory &factory = [](const Utils::FileName &fn) { - return std::make_unique(fn); - }); - void addNestedNode(FileNode *fileNode, const Utils::FileName &overrideBaseDir = Utils::FileName(), - const FolderNodeFactory &factory = [](const Utils::FileName &fn) { - return std::make_unique(fn); - }); + void addNestedNodes(const QList &files, + const Utils::FileName &overrideBaseDir = Utils::FileName(), + const FolderNodeFactory &factory + = [](const Utils::FileName &fn) {return std::make_unique(fn); }); + void addNestedNode(std::unique_ptr &&fileNode, + const Utils::FileName &overrideBaseDir = Utils::FileName(), + const FolderNodeFactory &factory + = [](const Utils::FileName &fn) { return std::make_unique(fn); }); void compress(); bool isAncesterOf(Node *n); diff --git a/src/plugins/pythoneditor/pythoneditorplugin.cpp b/src/plugins/pythoneditor/pythoneditorplugin.cpp index 0f9d58546f5..50ef0abffb4 100644 --- a/src/plugins/pythoneditor/pythoneditorplugin.cpp +++ b/src/plugins/pythoneditor/pythoneditorplugin.cpp @@ -461,7 +461,8 @@ void PythonProject::refresh(Target *target) for (const QString &f : m_files) { const QString displayName = baseDir.relativeFilePath(f); FileType fileType = f.endsWith(".pyqtc") ? FileType::Project : FileType::Source; - newRoot->addNestedNode(new PythonFileNode(FileName::fromString(f), displayName, fileType)); + newRoot->addNestedNode(std::make_unique(FileName::fromString(f), + displayName, fileType)); if (fileType == FileType::Source) { BuildTargetInfo bti; bti.buildKey = f; diff --git a/src/plugins/qbsprojectmanager/qbsnodetreebuilder.cpp b/src/plugins/qbsprojectmanager/qbsnodetreebuilder.cpp index 79b1fa9822d..37e669a7da9 100644 --- a/src/plugins/qbsprojectmanager/qbsnodetreebuilder.cpp +++ b/src/plugins/qbsprojectmanager/qbsnodetreebuilder.cpp @@ -73,10 +73,9 @@ void setupArtifacts(ProjectExplorer::FolderNode *root, const QList(path, type, isGenerated); node->setListInProject(!isGenerated || ad.fileTags().toSet().intersects(sourceTags)); - root->addNestedNode(node); + root->addNestedNode(std::move(node)); } root->compress(); } @@ -222,7 +221,7 @@ std::unique_ptr QbsNodeTreeBuilder::buildTree(QbsProject *pr for (const QString &f : files) { const Utils::FileName filePath = Utils::FileName::fromString(f); if (filePath.isChildOf(base)) - buildSystemFiles->addNestedNode(new ProjectExplorer::FileNode(filePath, ProjectExplorer::FileType::Project, false)); + buildSystemFiles->addNestedNode(std::make_unique(filePath, ProjectExplorer::FileType::Project, false)); } buildSystemFiles->compress(); root->addNode(buildSystemFiles); diff --git a/src/plugins/qmakeprojectmanager/qmakenodetreebuilder.cpp b/src/plugins/qmakeprojectmanager/qmakenodetreebuilder.cpp index 2b65d30c1db..b7b4abca0e4 100644 --- a/src/plugins/qmakeprojectmanager/qmakenodetreebuilder.cpp +++ b/src/plugins/qmakeprojectmanager/qmakenodetreebuilder.cpp @@ -176,7 +176,7 @@ static void createTree(const QmakePriFile *pri, QmakePriFileNode *node, const Fi // qt quick compiler moves qrc files into it:-/ Get better data based on // the filename. type = FileNode::fileTypeForFileName(fn); - vfolder->addNestedNode(new FileNode(fn, type, false)); + vfolder->addNestedNode(std::make_unique(fn, type, false)); } for (FolderNode *fn : vfolder->folderNodes()) fn->compress(); diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp index 2711afb3941..f8996b87865 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.cpp +++ b/src/plugins/qmlprojectmanager/qmlproject.cpp @@ -365,9 +365,9 @@ void QmlProject::generateProjectTree() const Utils::FileName fileName = Utils::FileName::fromString(f); const FileType fileType = (fileName == projectFilePath()) ? FileType::Project : FileNode::fileTypeForFileName(fileName); - newRoot->addNestedNode(new FileNode(fileName, fileType, false)); + newRoot->addNestedNode(std::make_unique(fileName, fileType, false)); } - newRoot->addNestedNode(new FileNode(projectFilePath(), FileType::Project, false)); + newRoot->addNestedNode(std::make_unique(projectFilePath(), FileType::Project, false)); setRootProjectNode(std::move(newRoot)); refreshTargetDirectory();