aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--addressbook/ChangeLog13
-rw-r--r--addressbook/gui/contact-editor/e-contact-editor.c12
-rw-r--r--addressbook/gui/contact-editor/e-contact-save-as.c3
3 files changed, 21 insertions, 7 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog
index 7a8822b7b1..052af8d619 100644
--- a/addressbook/ChangeLog
+++ b/addressbook/ChangeLog
@@ -1,3 +1,16 @@
+2001-10-26 Jon Trowbridge <trow@ximian.com>
+
+ * gui/contact-editor/e-contact-save-as.c (file_exists): Remove bad
+ dialog ref-counting crap.
+
+ * gui/contact-editor/e-contact-editor.c (save_card): Ref our
+ EContactEditor, since we are holding a pointer to it in
+ EditorCloseStruct.
+ (card_modified_cb): Unref our EContactEditor when we free our
+ EditorCloseStruct.
+ (card_added_cb): Unref our EContactEditor when we free our
+ EditorCloseStruct.
+
2001-10-26 JP Rosevear <jpr@ximian.com>
* conduit/address-conduit.c (check_for_slow_setting): make debug
diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c
index 72d49b5908..30835ce19b 100644
--- a/addressbook/gui/contact-editor/e-contact-editor.c
+++ b/addressbook/gui/contact-editor/e-contact-editor.c
@@ -824,8 +824,6 @@ card_added_cb (EBook *book, EBookStatus status, const char *id, EditorCloseStruc
EContactEditor *ce = ecs->ce;
gboolean should_close = ecs->should_close;
- g_free (ecs);
-
e_card_set_id (ce->card, id);
gtk_signal_emit (GTK_OBJECT (ce), contact_editor_signals[CARD_ADDED],
@@ -842,6 +840,9 @@ card_added_cb (EBook *book, EBookStatus status, const char *id, EditorCloseStruc
command_state_changed (ce);
}
}
+
+ gtk_object_unref (GTK_OBJECT (ce));
+ g_free (ecs);
}
static void
@@ -850,8 +851,6 @@ card_modified_cb (EBook *book, EBookStatus status, EditorCloseStruct *ecs)
EContactEditor *ce = ecs->ce;
gboolean should_close = ecs->should_close;
- g_free (ecs);
-
gtk_signal_emit (GTK_OBJECT (ce), contact_editor_signals[CARD_MODIFIED],
status, ce->card);
@@ -864,6 +863,9 @@ card_modified_cb (EBook *book, EBookStatus status, EditorCloseStruct *ecs)
command_state_changed (ce);
}
}
+
+ gtk_object_unref (GTK_OBJECT (ce));
+ g_free (ecs);
}
/* Emits the signal to request saving a card */
@@ -877,6 +879,8 @@ save_card (EContactEditor *ce, gboolean should_close)
EditorCloseStruct *ecs = g_new(EditorCloseStruct, 1);
ecs->ce = ce;
+ gtk_object_ref (GTK_OBJECT (ecs->ce));
+
ecs->should_close = should_close;
if (ce->is_new_card)
diff --git a/addressbook/gui/contact-editor/e-contact-save-as.c b/addressbook/gui/contact-editor/e-contact-save-as.c
index ec174615e9..2573eab1b3 100644
--- a/addressbook/gui/contact-editor/e-contact-save-as.c
+++ b/addressbook/gui/contact-editor/e-contact-save-as.c
@@ -196,7 +196,6 @@ file_exists(GtkFileSelection *filesel, const char *filename)
gui = glade_xml_new (EVOLUTION_GLADEDIR "/file-exists.glade", NULL);
dialog = GNOME_DIALOG(glade_xml_get_widget(gui, "dialog-exists"));
- gtk_widget_ref(GTK_WIDGET(dialog));
label = glade_xml_get_widget (gui, "label-exists");
if (GTK_IS_LABEL (label)) {
@@ -210,8 +209,6 @@ file_exists(GtkFileSelection *filesel, const char *filename)
gtk_widget_show (GTK_WIDGET (dialog));
result = gnome_dialog_run_and_close(dialog);
- gtk_widget_unref(GTK_WIDGET(dialog));
- gtk_widget_destroy(GTK_WIDGET(dialog));
g_free(gui);
return result;