aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--calendar/ChangeLog6
-rw-r--r--calendar/gui/dialogs/comp-editor.c11
2 files changed, 13 insertions, 4 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog
index 4569385566..dbb63ec191 100644
--- a/calendar/ChangeLog
+++ b/calendar/ChangeLog
@@ -1,3 +1,9 @@
+2001-10-01 Damon Chaplin <damon@ximian.com>
+
+ * gui/dialogs/comp-editor.c (comp_editor_destroy): unref the page
+ objects here, instead of in close_dialog(). (This was fixed a while
+ ago, but accidentally reverted.) Fixes bug #7543.
+
2001-10-01 Federico Mena Quintero <federico@ximian.com>
* gui/alarm-notify/alarm-notify-dialog.c (alarm_notify_dialog):
diff --git a/calendar/gui/dialogs/comp-editor.c b/calendar/gui/dialogs/comp-editor.c
index 593544c11f..79f692223d 100644
--- a/calendar/gui/dialogs/comp-editor.c
+++ b/calendar/gui/dialogs/comp-editor.c
@@ -243,6 +243,7 @@ comp_editor_destroy (GtkObject *object)
{
CompEditor *editor;
CompEditorPrivate *priv;
+ GList *l;
editor = COMP_EDITOR (object);
priv = editor->priv;
@@ -254,6 +255,12 @@ comp_editor_destroy (GtkObject *object)
priv->window = NULL;
}
+ /* We want to destroy the pages after the widgets get destroyed,
+ since they have lots of signal handlers connected to the widgets
+ with the pages as the data. */
+ for (l = priv->pages; l != NULL; l = l->next)
+ gtk_object_unref (GTK_OBJECT (l->data));
+
if (priv->comp) {
gtk_object_unref (GTK_OBJECT (priv->comp));
priv->comp = NULL;
@@ -899,15 +906,11 @@ static void
close_dialog (CompEditor *editor)
{
CompEditorPrivate *priv;
- GList *l;
priv = editor->priv;
g_assert (priv->window != NULL);
- for (l = priv->pages; l != NULL; l = l->next)
- gtk_object_unref (GTK_OBJECT (l->data));
-
gtk_object_destroy (GTK_OBJECT (editor));
}