diff options
author | Ray Strode <rstrode@redhat.com> | 2022-10-11 13:35:31 -0400 |
---|---|---|
committer | Ray Strode <rstrode@redhat.com> | 2022-10-11 13:44:14 -0400 |
commit | 78a6a28a7bf4d8ecac3863eb20d9f4aa9074a068 (patch) | |
tree | 3c595b3b0c9380a8eadfd7e33a7bae7e97690d35 | |
parent | 11a34a1d287f6a77b6c82ec83ef6088b62ea235c (diff) | |
download | gnome-calendar-force-refresh.tar.gz |
manager: Refresh timeline when events are updatedforce-refresh
gnome-calendar isn't exactly processing the stream of event
changes from eds properly. eds only notifies about changes in
the main event when, when there are related changes in other
recurrent events in the batch.
Rather than sort that out, for now, just do a full timeline refresh
any time there's a change in an event.
Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/881
-rw-r--r-- | src/core/gcal-manager.c | 6 | ||||
-rw-r--r-- | src/core/gcal-timeline.c | 10 | ||||
-rw-r--r-- | src/core/gcal-timeline.h | 1 |
3 files changed, 17 insertions, 0 deletions
diff --git a/src/core/gcal-manager.c b/src/core/gcal-manager.c index c5c54d36..f41de481 100644 --- a/src/core/gcal-manager.c +++ b/src/core/gcal-manager.c @@ -381,10 +381,13 @@ on_event_updated (GObject *source_object, GAsyncResult *result, gpointer user_data) { + GcalManager *self; GError *error = NULL; GCAL_ENTRY; + self = GCAL_MANAGER (g_object_get_data (user_data, "GcalManager")); + if (! e_cal_client_modify_object_finish (E_CAL_CLIENT (source_object), result, &error)) @@ -394,6 +397,8 @@ on_event_updated (GObject *source_object, } g_object_unref (E_CAL_COMPONENT (user_data)); + gcal_timeline_refresh (self->timeline); + GCAL_EXIT; } @@ -1068,6 +1073,7 @@ gcal_manager_update_event (GcalManager *self, */ g_object_ref (component); + g_object_set_data (G_OBJECT (component), "GcalManager", GCAL_MANAGER (self)); e_cal_client_modify_object (gcal_calendar_get_client (calendar), e_cal_component_get_icalcomponent (component), (ECalObjModType) mod, diff --git a/src/core/gcal-timeline.c b/src/core/gcal-timeline.c index dcec4cb3..c3853333 100644 --- a/src/core/gcal-timeline.c +++ b/src/core/gcal-timeline.c @@ -1076,3 +1076,13 @@ gcal_timeline_is_complete (GcalTimeline *self) return is_timeline_complete (self); } + +void +gcal_timeline_refresh (GcalTimeline *self) +{ + GCAL_ENTRY; + + update_calendar_monitor_filters (self); + + GCAL_EXIT; +} diff --git a/src/core/gcal-timeline.h b/src/core/gcal-timeline.h index 6d088330..c2c43714 100644 --- a/src/core/gcal-timeline.h +++ b/src/core/gcal-timeline.h @@ -53,5 +53,6 @@ void gcal_timeline_set_filter (GcalTimeline const gchar *filter); gboolean gcal_timeline_is_complete (GcalTimeline *self); +void gcal_timeline_refresh (GcalTimeline *self); G_END_DECLS |