summaryrefslogtreecommitdiff
path: root/src/nodemanager.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/nodemanager.cc')
-rw-r--r--src/nodemanager.cc18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/nodemanager.cc b/src/nodemanager.cc
index 8c7cb56..e94c798 100644
--- a/src/nodemanager.cc
+++ b/src/nodemanager.cc
@@ -113,6 +113,11 @@ nodeid_t NodeManager::createId()
return tree.createId();
}
+bool NodeManager::hasId(nodeid_t id)
+{
+ return tree.hasId(id);
+}
+
NodeIdListPair NodeManager::moveNode(nodeid_t id, nodeid_t to, nodeid_t beforeId)
throw (std::exception)
{
@@ -210,19 +215,20 @@ NodeIdList NodeManager::updateNode(nodeid_t id, const std::string &name,
return affectedNodes;
}
-NodeIdList NodeManager::createNode(nodeid_t parentid, nodeid_t *pid, nodeid_t insertbeforeid)
+NodeIdList NodeManager::createNode(nodeid_t parentid, nodeid_t id, nodeid_t insertbeforeid)
throw (std::exception)
{
+ if(hasId(id))
+ {
+ // Id alerady in tree, ignore
+ return {};
+ }
+
NodeIdList affectedNodes;
node_t t;
- nodeid_t id = *pid;//createId();
t.attributes["title"] = "";
t.id = id;
- if(pid)
- {
- *pid = id;
- }
try
{