diff --git a/src/plugins/cmakeprojectmanager/servermodereader.cpp b/src/plugins/cmakeprojectmanager/servermodereader.cpp index 4d71947ff22..5a0379227f8 100644 --- a/src/plugins/cmakeprojectmanager/servermodereader.cpp +++ b/src/plugins/cmakeprojectmanager/servermodereader.cpp @@ -727,16 +727,14 @@ ServerModeReader::addCMakeLists(CMakeProjectNode *root, const QList = Utils::transform(cmakeLists, [](const Node *n) { return n->filePath().parentDir(); }); root->addNestedNodes(cmakeLists, Utils::FileName(), [&cmakeDirs, &cmakeListsNodes](const Utils::FileName &fp) - -> ProjectExplorer::FolderNode * { - FolderNode *fn = nullptr; + -> std::unique_ptr { if (cmakeDirs.contains(fp)) { - CMakeListsNode *n = new CMakeListsNode(fp); - cmakeListsNodes.insert(fp, n); - fn = n; - } else { - fn = new FolderNode(fp); + auto fn = std::make_unique(fp); + cmakeListsNodes.insert(fp, fn.get()); + return fn; } - return fn; + + return std::make_unique(fp); }); root->compress(); return cmakeListsNodes; diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp index c1ae139b101..da0eb991215 100644 --- a/src/plugins/projectexplorer/projectnodes.cpp +++ b/src/plugins/projectexplorer/projectnodes.cpp @@ -96,8 +96,8 @@ static FolderNode *recursiveFindOrCreateFolderNode(FolderNode *folder, // No FolderNode yet, so create it auto tmp = factory(path); tmp->setDisplayName(part); - parent->addNode(tmp); - next = tmp; + next = tmp.get(); + parent->addNode(std::move(tmp)); } parent = next; } diff --git a/src/plugins/projectexplorer/projectnodes.h b/src/plugins/projectexplorer/projectnodes.h index 036af4c84e3..6f00ec20f55 100644 --- a/src/plugins/projectexplorer/projectnodes.h +++ b/src/plugins/projectexplorer/projectnodes.h @@ -221,11 +221,15 @@ public: QList fileNodes() const; FileNode *fileNode(const Utils::FileName &file) const; QList folderNodes() const; - using FolderNodeFactory = std::function; + 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 new FolderNode(fn); }); + 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 new FolderNode(fn); }); + const FolderNodeFactory &factory = [](const Utils::FileName &fn) { + return std::make_unique(fn); + }); void compress(); bool isAncesterOf(Node *n);