summaryrefslogtreecommitdiff
path: root/src/messagehandler.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/messagehandler.cc')
-rw-r--r--src/messagehandler.cc56
1 files changed, 17 insertions, 39 deletions
diff --git a/src/messagehandler.cc b/src/messagehandler.cc
index 6986d21..e4db5e7 100644
--- a/src/messagehandler.cc
+++ b/src/messagehandler.cc
@@ -118,50 +118,28 @@ MessageList handle_msg(MessageList msgList, clientid_t wsi)
node_manager.moveNode(m.move.id, m.move.parentid, m.move.insertbeforeid);
node_t createnode = node_manager.node(m.move.id);
-// NodeIdList commonAncestors;
-// NodeIdList removeAncestors;
-// NodeIdList createAncestors;
-//
-// // find command ancestors and fill ancestors for remove command
-// for(NodeIdList::iterator it_remove = tilpair.first.begin();
-// it_remove != tilpair.first.end(); it_remove++)
-// {
-// nodeid_t removeid = *it;
-// bool common = false;
-// for(NodeIdList::iterator it_create = tilpair.second.begin();
-// it_create = != tilpair.second.end(); it_create++)
-// {
-// nodeid_t createid = *id;
-// if(removeid == createid)
-// {
-// commandAncestors.push_back(removeid);
-// common = true;
-// }
-// }
-// if(!common)
-// {
-// removeAncestors.push_back(removeid);
-// }
-// }
-//
-// // fill ancestors for create command
-// for(NodeIdList::iterator it_create = tilpair.second.begin();
-// it_create = != tilpair.second.end(); it_create++)
-// {
-// nodeid_t createid = *id;
-// if(removeid == createid)
-// {
-// commandAncestors.push_back(removeid);
-// common = true;
-// }
-// }
-
message_t removemsg = create_msg_remove(removenode);
removemsg.nodes = tilpair.first;
message_t createmsg =
create_msg_create_with_attributes(createnode,
m.move.insertbeforeid);
- createmsg.attributes = createnode.attributes;
+ createmsg.create.attributes = createnode.attributes;
+
+ for(const auto& child_node_id : node_manager.subNodes(m.move.id))
+ {
+ if(child_node_id == m.move.id)
+ {
+ continue;
+ }
+ auto child_node = node_manager.node(child_node_id);
+ create_t child;
+ child.id = child_node.id;
+ child.parentid = child_node.parentid;
+ child.insertbeforeid = -1;
+ child.attributes = child_node.attributes;
+ createmsg.create.children.push_back(child);
+ }
+
createmsg.nodes = tilpair.second;
outmsgs.push_back(removemsg);