diff options
author | Guillaume Desmottes <gdesmott@gnome.org> | 2008-01-07 03:37:03 +0800 |
---|---|---|
committer | Guillaume Desmottes <gdesmott@gnome.org> | 2008-01-07 03:37:03 +0800 |
commit | e1a6505c145327e28b0464b5f94ae59bb4474cba (patch) | |
tree | 17172486bc327cc9998dc42702ba6c93d8805234 /libempathy | |
parent | dc53bfd4104ec850b081d0e7da8c01862d35279f (diff) | |
download | gsoc2013-empathy-e1a6505c145327e28b0464b5f94ae59bb4474cba.tar gsoc2013-empathy-e1a6505c145327e28b0464b5f94ae59bb4474cba.tar.gz gsoc2013-empathy-e1a6505c145327e28b0464b5f94ae59bb4474cba.tar.bz2 gsoc2013-empathy-e1a6505c145327e28b0464b5f94ae59bb4474cba.tar.lz gsoc2013-empathy-e1a6505c145327e28b0464b5f94ae59bb4474cba.tar.xz gsoc2013-empathy-e1a6505c145327e28b0464b5f94ae59bb4474cba.tar.zst gsoc2013-empathy-e1a6505c145327e28b0464b5f94ae59bb4474cba.zip |
emit the modified signal when a server is modified
Diffstat (limited to 'libempathy')
-rw-r--r-- | libempathy/empathy-irc-network.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/libempathy/empathy-irc-network.c b/libempathy/empathy-irc-network.c index fa422e9fc..c5577cf5a 100644 --- a/libempathy/empathy-irc-network.c +++ b/libempathy/empathy-irc-network.c @@ -62,6 +62,13 @@ struct _EmpathyIrcNetworkPrivate ((EmpathyIrcNetworkPrivate *) obj->priv) static void +server_modified_cb (EmpathyIrcServer *server, + EmpathyIrcNetwork *self) +{ + g_signal_emit (self, signals[MODIFIED], 0); +} + +static void empathy_irc_network_get_property (GObject *object, guint property_id, GValue *value, @@ -118,8 +125,14 @@ empathy_irc_network_dispose (GObject *object) { EmpathyIrcNetwork *self = EMPATHY_IRC_NETWORK (object); EmpathyIrcNetworkPrivate *priv = EMPATHY_IRC_NETWORK_GET_PRIVATE (self); + GSList *l; - g_slist_foreach (priv->servers, (GFunc) g_object_unref, NULL); + for (l = priv->servers; l != NULL; l = g_slist_next (l)) + { + g_signal_handlers_disconnect_by_func (l->data, + G_CALLBACK (server_modified_cb), self); + g_object_unref (l->data); + } G_OBJECT_CLASS (empathy_irc_network_parent_class)->dispose (object); } @@ -235,6 +248,9 @@ empathy_irc_network_add_server (EmpathyIrcNetwork *self, priv = EMPATHY_IRC_NETWORK_GET_PRIVATE (self); priv->servers = g_slist_append (priv->servers, g_object_ref (server)); + + g_signal_connect (server, "modified", G_CALLBACK (server_modified_cb), self); + g_signal_emit (self, signals[MODIFIED], 0); } @@ -256,5 +272,8 @@ empathy_irc_network_remove_server (EmpathyIrcNetwork *self, g_object_unref (l->data); priv->servers = g_slist_delete_link (priv->servers, l); + g_signal_handlers_disconnect_by_func (server, G_CALLBACK (server_modified_cb), + self); + g_signal_emit (self, signals[MODIFIED], 0); } |