aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@qt.io>2018-04-26 15:12:44 +0200
committerTobias Hunger <tobias.hunger@qt.io>2018-05-02 14:55:21 +0000
commit8bbe795c39b004e5b421e8bdb8674ce6cba40b3c (patch)
tree730bdf2edec6294237fe70fe9020b321f1177ac8 /src/plugins
parentd3329545674ba6ee0233477f0821741e496c6b77 (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.cpp11
-rw-r--r--src/plugins/projectexplorer/projectnodes.h2
-rw-r--r--src/plugins/resourceeditor/resourceeditorplugin.cpp4
-rw-r--r--src/plugins/resourceeditor/resourcenode.cpp4
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;
}