diff options
author | Tobias Hunger <tobias.hunger@qt.io> | 2018-04-26 15:12:44 +0200 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@qt.io> | 2018-05-02 14:55:21 +0000 |
commit | 8bbe795c39b004e5b421e8bdb8674ce6cba40b3c (patch) | |
tree | 730bdf2edec6294237fe70fe9020b321f1177ac8 /src/plugins | |
parent | d3329545674ba6ee0233477f0821741e496c6b77 (diff) |
ProjectExplorer: Make FolderNode::replaceSubtree take a unique_ptr
Change-Id: I8e853c00ec24838bdca342e3f1a1b1213f32ef93
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/projectexplorer/projectnodes.cpp | 11 | ||||
-rw-r--r-- | src/plugins/projectexplorer/projectnodes.h | 2 | ||||
-rw-r--r-- | src/plugins/resourceeditor/resourceeditorplugin.cpp | 4 | ||||
-rw-r--r-- | src/plugins/resourceeditor/resourcenode.cpp | 4 |
4 files changed, 10 insertions, 11 deletions
diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp index 5c1ea64c09..a1278cf106 100644 --- a/src/plugins/projectexplorer/projectnodes.cpp +++ b/src/plugins/projectexplorer/projectnodes.cpp @@ -604,20 +604,19 @@ bool FolderNode::isAncesterOf(Node *n) return p == this; } -bool FolderNode::replaceSubtree(Node *oldNode, Node *newNode) +bool FolderNode::replaceSubtree(Node *oldNode, std::unique_ptr<Node> &&newNode) { - std::unique_ptr<Node> nn(newNode); if (!oldNode) { - addNode(nn.release()); // Happens e.g. when a project is registered + addNode(std::move(newNode)); // Happens e.g. when a project is registered } else { auto it = std::find_if(m_nodes.begin(), m_nodes.end(), [oldNode](const std::unique_ptr<Node> &n) { return oldNode == n.get(); }); QTC_ASSERT(it != m_nodes.end(), return false); - if (nn) { - nn->setParentFolderNode(this); - *it = std::move(nn); + if (newNode) { + newNode->setParentFolderNode(this); + *it = std::move(newNode); } else { takeNode(oldNode); // Happens e.g. when project is shutting down } diff --git a/src/plugins/projectexplorer/projectnodes.h b/src/plugins/projectexplorer/projectnodes.h index db586ebd10..7a4faea764 100644 --- a/src/plugins/projectexplorer/projectnodes.h +++ b/src/plugins/projectexplorer/projectnodes.h @@ -237,7 +237,7 @@ public: // takes ownership of newNode. // Will delete newNode if oldNode is not a child of this node. - bool replaceSubtree(Node *oldNode, Node *newNode); + bool replaceSubtree(Node *oldNode, std::unique_ptr<Node> &&newNode); void setDisplayName(const QString &name); void setIcon(const QIcon &icon); diff --git a/src/plugins/resourceeditor/resourceeditorplugin.cpp b/src/plugins/resourceeditor/resourceeditorplugin.cpp index c98035cdb5..4421b7f3c1 100644 --- a/src/plugins/resourceeditor/resourceeditorplugin.cpp +++ b/src/plugins/resourceeditor/resourceeditorplugin.cpp @@ -221,8 +221,8 @@ void ResourceEditorPlugin::extensionsInitialized() FolderNode *const pn = file->parentFolderNode(); QTC_ASSERT(pn, continue); const Utils::FileName path = file->filePath(); - pn->replaceSubtree(file, new ResourceTopLevelNode(path, file->isGenerated(), - QString(), pn)); + pn->replaceSubtree(file, std::make_unique<ResourceTopLevelNode>(path, file->isGenerated(), + QString(), pn)); } }); } diff --git a/src/plugins/resourceeditor/resourcenode.cpp b/src/plugins/resourceeditor/resourcenode.cpp index 003ac9354a..9ba9df330f 100644 --- a/src/plugins/resourceeditor/resourcenode.cpp +++ b/src/plugins/resourceeditor/resourcenode.cpp @@ -72,8 +72,8 @@ public: return true; FolderNode *parent = m_node->parentFolderNode(); QTC_ASSERT(parent, return false); - auto newNode = new ResourceTopLevelNode(m_node->filePath(), false, m_node->contents(), parent); - m_node->parentFolderNode()->replaceSubtree(m_node, newNode); + parent->replaceSubtree(m_node, std::make_unique<ResourceTopLevelNode>( + m_node->filePath(), false, m_node->contents(), parent)); return true; } |