[gnome-calendar] month-cell: Clone and modify new event when dropping
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-calendar] month-cell: Clone and modify new event when dropping
- Date: Mon, 15 Jun 2020 17:53:30 +0000 (UTC)
commit ed7121c9952e893f3b8c90fba0def06f6e529c1d
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Mon Jun 15 13:26:51 2020 -0300
month-cell: Clone and modify new event when dropping
Instead of modifying the original event, create a new event
from it and modify this new event instead. After updating it
through gcal_manager_update_event(), GcalMonthView will remove
the old instance and add the new one anyway.
src/views/gcal-month-cell.c | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
---
diff --git a/src/views/gcal-month-cell.c b/src/views/gcal-month-cell.c
index 951a9208..d6f24550 100644
--- a/src/views/gcal-month-cell.c
+++ b/src/views/gcal-month-cell.c
@@ -204,6 +204,7 @@ gcal_month_cell_drag_drop (GtkWidget *widget,
gint y,
guint time)
{
+ g_autoptr (GcalEvent) changed_event = NULL;
GcalRecurrenceModType mod;
GcalMonthCell *self;
GcalCalendar *calendar;
@@ -228,17 +229,18 @@ gcal_month_cell_drag_drop (GtkWidget *widget,
GCAL_RETURN (FALSE);
event = gcal_event_widget_get_event (GCAL_EVENT_WIDGET (event_widget));
- calendar = gcal_event_get_calendar (event);
+ changed_event = gcal_event_new_from_event (event);
+ calendar = gcal_event_get_calendar (changed_event);
- if (gcal_event_has_recurrence (event) &&
+ if (gcal_event_has_recurrence (changed_event) &&
!ask_recurrence_modification_type (widget, &mod, calendar))
{
GCAL_GOTO (out);
}
/* Move the event's date */
- start_dt = gcal_event_get_date_start (event);
- end_dt = gcal_event_get_date_end (event);
+ start_dt = gcal_event_get_date_start (changed_event);
+ end_dt = gcal_event_get_date_end (changed_event);
start_month = g_date_time_get_month (start_dt);
start_year = g_date_time_get_year (start_dt);
@@ -263,18 +265,18 @@ gcal_month_cell_drag_drop (GtkWidget *widget,
new_start = g_date_time_add_days (start_dt, diff);
- gcal_event_set_date_start (event, new_start);
+ gcal_event_set_date_start (changed_event, new_start);
/* The event may have a NULL end date, so we have to check it here */
if (end_dt)
{
GDateTime *new_end = g_date_time_add (new_start, timespan);
- gcal_event_set_date_end (event, new_end);
+ gcal_event_set_date_end (changed_event, new_end);
g_clear_pointer (&new_end, g_date_time_unref);
}
- gcal_manager_update_event (gcal_context_get_manager (self->context), event, mod);
+ gcal_manager_update_event (gcal_context_get_manager (self->context), changed_event, mod);
}
g_clear_pointer (&start_dt, g_date_time_unref);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]