diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2010-08-31 02:23:33 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2010-08-31 02:26:00 +0800 |
commit | 035fbcd84177cf592a48e41ca0ca7689aaaa9d17 (patch) | |
tree | ff895767b9b3f55ae67fe0aa764102e526c85e41 /composer/e-msg-composer.c | |
parent | 680c58a7660020c614690421ff0e37ee55b2c9aa (diff) | |
download | gsoc2013-evolution-035fbcd84177cf592a48e41ca0ca7689aaaa9d17.tar.gz gsoc2013-evolution-035fbcd84177cf592a48e41ca0ca7689aaaa9d17.tar.zst gsoc2013-evolution-035fbcd84177cf592a48e41ca0ca7689aaaa9d17.zip |
Composer autosave cleanups.
This simplifies the async autosave logic and improves error handling.
Hoping this will solve bug #616987 but I've yet to reproduce it myself.
Diffstat (limited to 'composer/e-msg-composer.c')
-rw-r--r-- | composer/e-msg-composer.c | 34 |
1 files changed, 16 insertions, 18 deletions
diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c index 9c80a193b9..65523677e9 100644 --- a/composer/e-msg-composer.c +++ b/composer/e-msg-composer.c @@ -596,7 +596,8 @@ account_hash_algo_to_camel_hash (const gchar *hash_algo) static CamelMimeMessage * build_message (EMsgComposer *composer, gboolean html_content, - gboolean save_html_object_data) + gboolean save_html_object_data, + GError **error) { GtkhtmlEditor *editor; EMsgComposerPrivate *p = composer->priv; @@ -1149,20 +1150,14 @@ exception: g_object_unref (new); - if (!g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) - e_alert_run_dialog_for_args ( - (GtkWindow *) composer, - "mail-composer:no-build-message", - local_error->message, NULL); - - g_error_free (local_error); - if (recipients) { for (i=0; i<recipients->len; i++) g_free (recipients->pdata[i]); g_ptr_array_free (recipients, TRUE); } + g_propagate_error (error, local_error); + return NULL; } @@ -3781,7 +3776,8 @@ e_msg_composer_add_inline_image_from_mime_part (EMsgComposer *composer, **/ CamelMimeMessage * e_msg_composer_get_message (EMsgComposer *composer, - gboolean save_html_object_data) + gboolean save_html_object_data, + GError **error) { EAttachmentView *view; EAttachmentStore *store; @@ -3803,7 +3799,9 @@ e_msg_composer_get_message (EMsgComposer *composer, editor = GTKHTML_EDITOR (composer); html_content = gtkhtml_editor_get_html_mode (editor); - return build_message (composer, html_content, save_html_object_data); + return build_message ( + composer, html_content, + save_html_object_data, error); } static gchar * @@ -3859,7 +3857,8 @@ e_msg_composer_get_message_print (EMsgComposer *composer, editor = GTKHTML_EDITOR (composer); html_content = gtkhtml_editor_get_html_mode (editor); - msg = build_message (composer, html_content, save_html_object_data); + msg = build_message ( + composer, html_content, save_html_object_data, NULL); if (msg == NULL) return NULL; @@ -3871,7 +3870,8 @@ e_msg_composer_get_message_print (EMsgComposer *composer, flags = msg_composer_get_message_print_helper ( temp_composer, html_content); - msg = build_message (temp_composer, TRUE, save_html_object_data); + msg = build_message ( + temp_composer, TRUE, save_html_object_data, NULL); if (msg != NULL) camel_medium_set_header ( CAMEL_MEDIUM (msg), "X-Evolution-Format", flags); @@ -3883,7 +3883,8 @@ e_msg_composer_get_message_print (EMsgComposer *composer, } CamelMimeMessage * -e_msg_composer_get_message_draft (EMsgComposer *composer) +e_msg_composer_get_message_draft (EMsgComposer *composer, + GError **error) { GtkhtmlEditor *editor; EComposerHeaderTable *table; @@ -3917,7 +3918,7 @@ e_msg_composer_get_message_draft (EMsgComposer *composer) smime_encrypt = gtk_toggle_action_get_active (action); gtk_toggle_action_set_active (action, FALSE); - msg = build_message (composer, TRUE, TRUE); + msg = build_message (composer, TRUE, TRUE, error); if (msg == NULL) return NULL; @@ -3933,9 +3934,6 @@ e_msg_composer_get_message_draft (EMsgComposer *composer) action = GTK_TOGGLE_ACTION (ACTION (SMIME_ENCRYPT)); gtk_toggle_action_set_active (action, smime_encrypt); - if (msg == NULL) - return NULL; - /* Attach account info to the draft. */ account = e_composer_header_table_get_account (table); if (account && account->name) |