From 745e022aa04a25ce6fdcbad2691b68d82703515e Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Tue, 1 Aug 2023 17:31:20 +0200 Subject: [PATCH] calendar-monitor: Don't remove events unnecessarily Apparently I never properly implemented range comparison in remove_events_outside_range(). Do so now. This makes the infinite scrolling month view stop flickering events when changing weeks. --- src/core/gcal-calendar-monitor.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/core/gcal-calendar-monitor.c b/src/core/gcal-calendar-monitor.c index 465a6708..68029cce 100644 --- a/src/core/gcal-calendar-monitor.c +++ b/src/core/gcal-calendar-monitor.c @@ -967,6 +967,11 @@ remove_events_outside_range (GcalCalendarMonitor *self, g_hash_table_iter_init (&iter, self->shared.events); while (g_hash_table_iter_next (&iter, NULL, (gpointer*) &event)) { + GcalRange *event_range = gcal_event_get_range (event); + + if (gcal_range_calculate_overlap (range, event_range, NULL) != GCAL_RANGE_NO_OVERLAP) + continue; + g_object_ref (event); g_hash_table_iter_remove (&iter);