diff options
-rw-r--r-- | addressbook/ChangeLog | 13 | ||||
-rw-r--r-- | addressbook/gui/contact-editor/e-contact-editor.c | 12 | ||||
-rw-r--r-- | addressbook/gui/contact-editor/e-contact-save-as.c | 3 |
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; |