diff options
-rw-r--r-- | addressbook/ChangeLog | 10 | ||||
-rw-r--r-- | addressbook/gui/contact-editor/e-contact-save-as.c | 17 |
2 files changed, 26 insertions, 1 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog index 94604fb83e..910f5821f7 100644 --- a/addressbook/ChangeLog +++ b/addressbook/ChangeLog @@ -1,9 +1,19 @@ +2001-10-22 Christopher James Lahey <clahey@ximian.com> + + * gui/contact-editor/e-contact-save-as.c (save_it): Put up an + error dialog if there's an error while saving. If the person hits + cancel on the "file exists" dialog, don't close the file selection + dialog. Fixes Ximian bug #7055. + 2001-10-21 Christopher James Lahey <clahey@ximian.com> * gui/widgets/e-addressbook-reflow-adapter.c (model_and_selection_free): right_click_up here when we let go of the popup. + * gui/widgets/e-minicard-view.c (e_minicard_view_selection_event): + right_click_up here. + 2001-10-21 Christopher James Lahey <clahey@ximian.com> * gui/component/select-names/e-select-names.c diff --git a/addressbook/gui/contact-editor/e-contact-save-as.c b/addressbook/gui/contact-editor/e-contact-save-as.c index 9ca7d844e8..ec174615e9 100644 --- a/addressbook/gui/contact-editor/e-contact-save-as.c +++ b/addressbook/gui/contact-editor/e-contact-save-as.c @@ -33,6 +33,8 @@ #include <libgnome/gnome-i18n.h> #include <errno.h> #include <string.h> +#include <libgnomeui/gnome-messagebox.h> +#include <libgnomeui/gnome-stock.h> static int file_exists(GtkFileSelection *filesel, const char *filename); @@ -58,8 +60,21 @@ save_it(GtkWidget *widget, SaveAsInfo *info) e_write_file(filename, info->vcard, O_WRONLY | O_CREAT | O_TRUNC); break; case 1 : /* cancel */ - break; + return; } + } else if (error != 0) { + GtkWidget *dialog; + char *str; + + str = g_strdup_printf ("Error saving %s: %s", filename, strerror(errno)); + dialog = gnome_message_box_new (str, GNOME_MESSAGE_BOX_ERROR, GNOME_STOCK_BUTTON_OK, NULL); + g_free (str); + + gnome_dialog_set_parent (GNOME_DIALOG (dialog), GTK_WINDOW (info->filesel)); + + gtk_widget_show (dialog); + + return; } g_free (info->vcard); |