aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--calendar/ChangeLog7
-rw-r--r--calendar/gui/gnome-cal.c11
2 files changed, 18 insertions, 0 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog
index 536b9da033..22cf72e51c 100644
--- a/calendar/ChangeLog
+++ b/calendar/ChangeLog
@@ -1,5 +1,12 @@
2009-02-25 Milan Crha <mcrha@redhat.com>
+ ** Fix for bug #529037
+
+ * gui/gnome-cal.c: (gnome_calendar_destroy):
+ Disconnect signals on ESource-s too, not only on ECal-s.
+
+2009-02-25 Milan Crha <mcrha@redhat.com>
+
** Fix for bug #561465
* gui/e-meeting-list-view.c: (build_table):
diff --git a/calendar/gui/gnome-cal.c b/calendar/gui/gnome-cal.c
index 3a539cb1b2..1bae7d2879 100644
--- a/calendar/gui/gnome-cal.c
+++ b/calendar/gui/gnome-cal.c
@@ -1923,8 +1923,13 @@ gnome_calendar_destroy (GtkObject *object)
/* Clean up the clients */
for (i = 0; i < E_CAL_SOURCE_TYPE_LAST; i++) {
for (l = priv->clients_list[i]; l != NULL; l = l->next) {
+ ESource *source = e_cal_get_source (l->data);
+
g_signal_handlers_disconnect_matched (l->data, G_SIGNAL_MATCH_DATA,
0, 0, NULL, NULL, gcal);
+
+ if (source)
+ g_signal_handlers_disconnect_matched (source, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, gcal);
}
g_hash_table_destroy (priv->clients[i]);
@@ -1934,9 +1939,15 @@ gnome_calendar_destroy (GtkObject *object)
priv->clients_list[i] = NULL;
if (priv->default_client[i]) {
+ ESource *source = e_cal_get_source (priv->default_client[i]);
+
g_signal_handlers_disconnect_matched (priv->default_client[i],
G_SIGNAL_MATCH_DATA,
0, 0, NULL, NULL, gcal);
+
+ if (source)
+ g_signal_handlers_disconnect_matched (source, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, gcal);
+
g_object_unref (priv->default_client[i]);
}
priv->default_client[i] = NULL;