summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJamie Murphy <hello@itsjamie.dev>2022-10-28 10:53:01 -0700
committerJamie Murphy <hello@itsjamie.dev>2022-10-28 10:53:01 -0700
commit394ed77ec75174ae7cf0fdaee8deb9b42acc5092 (patch)
treef62abff7871238fb947a1b59a51c526ceac5cd78
parentdb0c839b3b27a9b9115bce67812b06a01d9b6dca (diff)
downloadgnome-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.c2
-rw-r--r--src/gui/gtd-task-row.c11
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");