diff options
author | Jamie Murphy <hello@itsjamie.dev> | 2022-10-28 10:53:01 -0700 |
---|---|---|
committer | Jamie Murphy <hello@itsjamie.dev> | 2022-10-28 10:53:01 -0700 |
commit | 394ed77ec75174ae7cf0fdaee8deb9b42acc5092 (patch) | |
tree | f62abff7871238fb947a1b59a51c526ceac5cd78 | |
parent | db0c839b3b27a9b9115bce67812b06a01d9b6dca (diff) | |
download | gnome-todo-394ed77ec75174ae7cf0fdaee8deb9b42acc5092.tar.gz |
gtd-task-row: Set self->new_date by default
This prevents Endeavour from accidentally wiping due dates when a task
is saved
Fixes #485
-rw-r--r-- | src/gui/gtd-edit-pane.c | 2 | ||||
-rw-r--r-- | src/gui/gtd-task-row.c | 11 |
2 files changed, 10 insertions, 3 deletions
diff --git a/src/gui/gtd-edit-pane.c b/src/gui/gtd-edit-pane.c index 347bd476..1de17ac2 100644 --- a/src/gui/gtd-edit-pane.c +++ b/src/gui/gtd-edit-pane.c @@ -551,6 +551,7 @@ gtd_edit_pane_set_task (GtdEditPane *self, g_signal_handlers_block_by_func (buffer, on_text_buffer_changed_cb, self); /* due date */ + self->new_date = gtd_task_get_due_date (self->task); update_date_widgets (self, gtd_task_get_due_date (self->task)); /* description */ @@ -598,3 +599,4 @@ gtd_edit_pane_set_markdown_renderer (GtdEditPane *self, gtd_markdown_renderer_add_buffer (renderer, buffer); } + diff --git a/src/gui/gtd-task-row.c b/src/gui/gtd-task-row.c index b6411c89..49c45fb7 100644 --- a/src/gui/gtd-task-row.c +++ b/src/gui/gtd-task-row.c @@ -759,6 +759,8 @@ void gtd_task_row_set_active (GtdTaskRow *self, gboolean active) { + GDateTime *dt; + g_return_if_fail (GTD_IS_TASK_ROW (self)); if (self->active == active) @@ -783,13 +785,16 @@ gtd_task_row_set_active (GtdTaskRow *self, } else if (!active && self->edit_pane) { - /* For some reason, setting the due date before closing the Edit Row has * the potential to cause the Task List to update, causing the active task row * to become corrupted, and crash Endeavour. My guess is this is an upstream * behaviour, so work around it by setting the task due date during close */ - gtd_task_set_due_date (self->task, - gtd_edit_pane_get_new_date_time (self->edit_pane)); + dt = gtd_edit_pane_get_new_date_time (self->edit_pane); + + if (gtd_task_get_due_date (self->task) != dt) { + gtd_task_set_due_date (self->task, + gtd_edit_pane_get_new_date_time (self->edit_pane)); + } GTD_TRACE_MSG ("Destroying edit pane"); |