From 90597ca128b9638cf22f0f70fbf21d1798355feb Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Tue, 24 Mar 2020 12:55:12 -0300 Subject: [PATCH] calendar: Only notify visibility when it changes Otherwise we get weird double-notify issues from it. --- src/core/gcal-calendar.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/core/gcal-calendar.c b/src/core/gcal-calendar.c index 82917245..5e66eedb 100644 --- a/src/core/gcal-calendar.c +++ b/src/core/gcal-calendar.c @@ -31,6 +31,7 @@ typedef struct ECalClient *client; gboolean read_only; + gboolean visible; gulong color_changed_handler_id; gulong name_changed_handler_id; @@ -132,6 +133,16 @@ on_source_visible_changed_cb (ESourceSelectable *source, GParamSpec *pspec, GcalCalendar *self) { + GcalCalendarPrivate *priv; + gboolean visible; + + priv = gcal_calendar_get_instance_private (self); + visible = e_source_selectable_get_selected (source); + + if (visible == priv->visible) + return; + + priv->visible = visible; g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_VISIBLE]); } @@ -169,6 +180,7 @@ gcal_calendar_initable_init (GInitable *initable, } selectable_extension = e_source_get_extension (priv->source, E_SOURCE_EXTENSION_CALENDAR); + priv->visible = e_source_selectable_get_selected (selectable_extension); update_color (self); priv->color_changed_handler_id = g_signal_connect (selectable_extension, @@ -642,6 +654,9 @@ gcal_calendar_set_visible (GcalCalendar *self, g_return_if_fail (GCAL_IS_CALENDAR (self)); + if (priv->visible == visible) + return; + selectable_extension = e_source_get_extension (priv->source, E_SOURCE_EXTENSION_CALENDAR); e_source_selectable_set_selected (selectable_extension, visible);