disconnet the signal handler registered on source object for CHANGED
authorSivaiah Nallagatla <snallagatla@novell.com>
Fri, 16 Jul 2004 14:51:37 +0000 (14:51 +0000)
committerSivaiah Nallagatla <siva@src.gnome.org>
Fri, 16 Jul 2004 14:51:37 +0000 (14:51 +0000)
2004-07-16  Sivaiah Nallagatla <snallagatla@novell.com>

        * libedataserver/e-source-group.c (e_source_group_remove_source)
        (e_source_group_remove_source) : disconnet the signal
        handler registered on source object for CHANGED singal
        as we may not be interested in the changes in source once
        it is removed form the group

ChangeLog
libedataserver/e-source-group.c

index ccb756b..42f648b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2004-07-16  Sivaiah Nallagatla <snallagatla@novell.com>
+
+       * libedataserver/e-source-group.c (e_source_group_remove_source)
+       (e_source_group_remove_source) : disconnet the signal 
+       handler registered on source object for CHANGED singal
+       as we may not be interested in the changes in source once
+       it is removed form the group
+
 2004-07-12  Chris Toshok  <toshok@ximian.com>
 
        [ most likely fixes #57999 ]
index 06dc316..5b9c07d 100644 (file)
@@ -615,6 +615,9 @@ e_source_group_remove_source (ESourceGroup *group,
        for (p = group->priv->sources; p != NULL; p = p->next) {
                if (E_SOURCE (p->data) == source) {
                        group->priv->sources = g_slist_remove_link (group->priv->sources, p);
+                       g_signal_handlers_disconnect_by_func (source,
+                                                             G_CALLBACK (source_changed_callback),
+                                                             group);
                        g_signal_emit (group, signals[SOURCE_REMOVED], 0, source);
                        g_signal_emit (group, signals[CHANGED], 0);
                        return TRUE;
@@ -641,6 +644,9 @@ e_source_group_remove_source_by_uid (ESourceGroup *group,
 
                if (strcmp (e_source_peek_uid (source), uid) == 0) {
                        group->priv->sources = g_slist_remove_link (group->priv->sources, p);
+                       g_signal_handlers_disconnect_by_func (source,
+                                                             G_CALLBACK (source_changed_callback),
+                                                             group);
                        g_signal_emit (group, signals[SOURCE_REMOVED], 0, source);
                        g_signal_emit (group, signals[CHANGED], 0);
                        return TRUE;