diff --git a/ChangeLog b/ChangeLog index 265a96f88..df304c001 100644 --- a/ChangeLog +++ b/ChangeLog @@ -88,6 +88,10 @@ - TW-1282 incorrect URLs in man task-sync (thanks to Jeremiah Marks). - TW-1288 Added missing locking for task modifications (thanks to Kosta Harlan, Ralph Bean, Adam Coddington). +- TW-1293 Modifying or deleting a child task does not propagate if there are no + siblings (thanks to darkfeline). +- TW-1294 Modifying a child task does not propagate to parent (thanks to + darkfeline). - TW-1295 test/time.t fails on the last day of the month (thanks to Jakub Wilk). - TW-1296 make test/run_all exit with non-zero code if a test fail (thanks to diff --git a/src/commands/CmdAnnotate.cpp b/src/commands/CmdAnnotate.cpp index 090533f84..d1ada6c1c 100644 --- a/src/commands/CmdAnnotate.cpp +++ b/src/commands/CmdAnnotate.cpp @@ -90,10 +90,9 @@ int CmdAnnotate::execute (std::string& output) // Annotate siblings. if (task->has ("parent")) { - std::vector siblings = context.tdb2.siblings (*task); - if (siblings.size () && - confirm (STRING_CMD_ANNO_CONFIRM_R)) + if (confirm (STRING_CMD_ANNO_CONFIRM_R)) { + std::vector siblings = context.tdb2.siblings (*task); std::vector ::iterator sibling; for (sibling = siblings.begin (); sibling != siblings.end (); ++sibling) { diff --git a/src/commands/CmdAppend.cpp b/src/commands/CmdAppend.cpp index 65ab137b6..9b1fed0a3 100644 --- a/src/commands/CmdAppend.cpp +++ b/src/commands/CmdAppend.cpp @@ -90,10 +90,9 @@ int CmdAppend::execute (std::string& output) // Append to siblings. if (task->has ("parent")) { - std::vector siblings = context.tdb2.siblings (*task); - if (siblings.size () && - confirm (STRING_CMD_APPEND_CONFIRM_R)) + if (confirm (STRING_CMD_APPEND_CONFIRM_R)) { + std::vector siblings = context.tdb2.siblings (*task); std::vector ::iterator sibling; for (sibling = siblings.begin (); sibling != siblings.end (); ++sibling) { diff --git a/src/commands/CmdDelete.cpp b/src/commands/CmdDelete.cpp index bffd791f4..54ce2db85 100644 --- a/src/commands/CmdDelete.cpp +++ b/src/commands/CmdDelete.cpp @@ -103,10 +103,9 @@ int CmdDelete::execute (std::string& output) // Delete siblings. if (task->has ("parent")) { - std::vector siblings = context.tdb2.siblings (*task); - if (siblings.size () && - confirm (STRING_CMD_DELETE_CONFIRM_R)) + if (confirm (STRING_CMD_DELETE_CONFIRM_R)) { + std::vector siblings = context.tdb2.siblings (*task); std::vector ::iterator sibling; for (sibling = siblings.begin (); sibling != siblings.end (); ++sibling) { diff --git a/src/commands/CmdModify.cpp b/src/commands/CmdModify.cpp index 774ccc929..73c761388 100644 --- a/src/commands/CmdModify.cpp +++ b/src/commands/CmdModify.cpp @@ -117,10 +117,9 @@ int CmdModify::execute (std::string& output) // Task potentially has siblings - modify them. if (task->has ("parent")) { - std::vector siblings = context.tdb2.siblings (*task); - if (siblings.size () && - confirm (STRING_CMD_MODIFY_RECUR)) + if (confirm (STRING_CMD_MODIFY_RECUR)) { + std::vector siblings = context.tdb2.siblings (*task); std::vector ::iterator sibling; for (sibling = siblings.begin (); sibling != siblings.end (); ++sibling) { @@ -135,6 +134,12 @@ int CmdModify::execute (std::string& output) if (context.verbose ("project")) projectChanges[sibling->get ("project")] = onProjectChange (alternate, *sibling); } + + // Modify the parent + Task parent; + context.tdb2.get (task->get ("parent"), parent); + parent.modify (Task::modReplace); + context.tdb2.modify (parent); } } diff --git a/src/commands/CmdPrepend.cpp b/src/commands/CmdPrepend.cpp index f5f65387f..cece31410 100644 --- a/src/commands/CmdPrepend.cpp +++ b/src/commands/CmdPrepend.cpp @@ -90,10 +90,9 @@ int CmdPrepend::execute (std::string& output) // Prepend to siblings. if (task->has ("parent")) { - std::vector siblings = context.tdb2.siblings (*task); - if (siblings.size () && - confirm (STRING_CMD_PREPEND_CONFIRM_R)) + if (confirm (STRING_CMD_PREPEND_CONFIRM_R)) { + std::vector siblings = context.tdb2.siblings (*task); std::vector ::iterator sibling; for (sibling = siblings.begin (); sibling != siblings.end (); ++sibling) {