Do ignore empty recipients when checking names
[modest] / src / modest-signal-mgr.c
index d8be1d3..ad681ba 100644 (file)
@@ -70,6 +70,7 @@ modest_signal_mgr_disconnect_all_and_destroy (GSList *lst)
                                g_signal_handler_disconnect (handler->obj, handler->handler_id);
                        }
                        g_object_unref (handler->obj);
+                       g_free (handler->signal_name);
                        handler->obj = NULL;
                }
                g_free (handler);
@@ -88,9 +89,9 @@ obj_in_a_signal_handler (gconstpointer a,
 
        if (list_item_handler->obj == handler->obj &&
            !strcmp (list_item_handler->signal_name, handler->signal_name))
-               return 0;
+               return FALSE;
        else 
-               return 1;
+               return TRUE;
 }
 
 GSList *
@@ -114,6 +115,7 @@ modest_signal_mgr_disconnect (GSList *list,
        g_signal_handler_disconnect (signal_handler->obj, signal_handler->handler_id);
 
        /* Free the handlers */
+       g_object_unref (signal_handler->obj);
        g_free (signal_handler->signal_name);
        g_free (signal_handler);
        g_free (tmp->signal_name);
@@ -122,3 +124,26 @@ modest_signal_mgr_disconnect (GSList *list,
        /* Remove item from list */
        return g_slist_delete_link (list, item);
 }
+
+gboolean  
+modest_signal_mgr_is_connected (GSList *list, 
+                               GObject *instance,
+                               const gchar *signal_name)
+{
+       GSList *item = NULL;
+       SignalHandler *tmp = NULL;
+
+       /* Build the helper object */
+       tmp = g_new (SignalHandler, 1);
+       tmp->obj = instance;
+       tmp->signal_name = g_strdup (signal_name);
+
+       /* Find the element */
+       item = g_slist_find_custom (list, tmp, obj_in_a_signal_handler);
+
+       /* Free the handlers */
+       g_free (tmp->signal_name);
+       g_free (tmp);
+
+       return (item != NULL) ? TRUE : FALSE;
+}