aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2010-12-21 20:09:27 +0800
committerRodrigo Moya <rodrigo@gnome-db.org>2011-06-30 00:41:13 +0800
commitea35907c16e6dae0a992306cd00cb02a472caa1f (patch)
treedcbcd5fd3aa1a3d7b20add674001c67f5150f25f
parentff3997a2880dd28a3b2df6c67337434bc10c5da0 (diff)
downloadgsoc2013-evolution-ea35907c16e6dae0a992306cd00cb02a472caa1f.tar.gz
gsoc2013-evolution-ea35907c16e6dae0a992306cd00cb02a472caa1f.tar.zst
gsoc2013-evolution-ea35907c16e6dae0a992306cd00cb02a472caa1f.zip
Disconnect signal handlers from actions in alert_dispose()
-rw-r--r--e-util/e-alert.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/e-util/e-alert.c b/e-util/e-alert.c
index 9d55c40ddf..f99ca51c57 100644
--- a/e-util/e-alert.c
+++ b/e-util/e-alert.c
@@ -493,8 +493,13 @@ alert_dispose (GObject *object)
priv = E_ALERT_GET_PRIVATE (object);
- while (!g_queue_is_empty (&priv->actions))
- g_object_unref (g_queue_pop_head (&priv->actions));
+ while (!g_queue_is_empty (&priv->actions)) {
+ GtkAction *action = g_queue_pop_head (&priv->actions);
+
+ g_signal_handlers_disconnect_by_func (action, G_CALLBACK (alert_action_activate), object);
+
+ g_object_unref (action);
+ }
/* Chain up to parent's dispose() method. */
G_OBJECT_CLASS (e_alert_parent_class)->dispose (object);