summaryrefslogtreecommitdiff
path: root/src/taskmanager.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/taskmanager.cc')
-rw-r--r--src/taskmanager.cc21
1 files changed, 11 insertions, 10 deletions
diff --git a/src/taskmanager.cc b/src/taskmanager.cc
index 6ebffd5..1ca0b63 100644
--- a/src/taskmanager.cc
+++ b/src/taskmanager.cc
@@ -98,23 +98,24 @@ taskid_t TaskManager::createId() {
return idCount++;
}
-TaskIdList TaskManager::moveTask(taskid_t id, taskid_t to)
+TaskIdListPair TaskManager::moveTask(taskid_t id, taskid_t to)
throw (std::exception) {
- if(isProtected(id)) return TaskIdList();
+ if(isProtected(id)) return TaskIdListPair();
- TaskIdList affectedTasks;
+ task_t t = tree.data(id);
+ t.parentid = to;
- try {
- affectedTasks = tree.move(id, to);
- }
- catch (std::exception& e) {
- throw e;
- }
+ TaskIdList tilremove = tree.remove(id);
+ TaskIdList tilcreate = tree.insertAsChild(to, id, t);
+
+ TaskIdListPair tilpair;
+ tilpair.first = tilremove;
+ tilpair.second = tilcreate;
flushTasks();
- return affectedTasks;
+ return tilpair;
}
TaskIdList TaskManager::removeTask(taskid_t id)