From 1903474ca64f35df857d20cac7d3457c1aa16d43 Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Thu, 24 Nov 2016 00:49:03 -0200 Subject: [PATCH] week-header: make event removal more robust The current code does not move the remaining events up and, when changing the week header various times, it ends up showing completely bogus events at bogus positions. Fix that by properly moving events up when removing them. --- src/views/gcal-week-header.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/views/gcal-week-header.c b/src/views/gcal-week-header.c index 333c1aeb..74d3a5ad 100644 --- a/src/views/gcal-week-header.c +++ b/src/views/gcal-week-header.c @@ -1151,19 +1151,28 @@ gcal_week_header_remove_event (GcalWeekHeader *self, if (!removed_event) goto out; + g_message ("DEL: '%s'", gcal_event_get_summary (removed_event)); + /* Remove from the weekday's GList */ for (weekday = 0; weekday < 7; weekday++) { + gint event_position; + l = self->events[weekday]; + event_position = g_list_index (self->events[weekday], removed_event); + + if (event_position == -1) + continue; + + g_message (" - Column %d has event at %d (length: %d)", weekday, event_position, g_list_length (l) - 1); + + /* Remove from the current weekday */ l = g_list_remove (l, removed_event); - self->events[weekday] = l; - } - g_message ("DEL: '%s' (length of %d: %d)", - gcal_event_get_summary (removed_event), - weekday, - g_list_length (l)); + /* Move remaining events up */ + move_events_at_column (self, UP, weekday, event_position); + } out: g_clear_pointer (&children, g_list_free);