diff options
Diffstat (limited to 'src/taskmanager.cc')
-rw-r--r-- | src/taskmanager.cc | 21 |
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) |