aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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);