[evolution] Bug 778541 - Prefer Sent/Drafts folder account for non-existent identity



commit d9a6648783b9f7c8ec5be3953a7ccc21fa286b40
Author: Milan Crha <mcrha redhat com>
Date:   Tue Feb 28 15:38:52 2017 +0100

    Bug 778541 - Prefer Sent/Drafts folder account for non-existent identity

 src/mail/em-composer-utils.c |   34 +++++++++++++++++++++++++++++++++-
 1 files changed, 33 insertions(+), 1 deletions(-)
---
diff --git a/src/mail/em-composer-utils.c b/src/mail/em-composer-utils.c
index 04ab716..00335a6 100644
--- a/src/mail/em-composer-utils.c
+++ b/src/mail/em-composer-utils.c
@@ -1803,6 +1803,37 @@ em_composer_utils_get_original_marker (void)
        return quoting_text (QUOTING_ORIGINAL);
 }
 
+static gboolean
+emcu_message_references_existing_account (CamelMimeMessage *message,
+                                         EMsgComposer *composer)
+{
+       ESource *source;
+       gchar *identity_uid;
+       gboolean res = FALSE;
+
+       g_return_val_if_fail (CAMEL_IS_MIME_MESSAGE (message), FALSE);
+       g_return_val_if_fail (E_IS_MSG_COMPOSER (composer), FALSE);
+
+       identity_uid = (gchar *) camel_medium_get_header (CAMEL_MEDIUM (message), "X-Evolution-Identity");
+       if (!identity_uid) {
+               /* for backward compatibility */
+               identity_uid = (gchar *) camel_medium_get_header (CAMEL_MEDIUM (message), 
"X-Evolution-Account");
+       }
+
+       if (!identity_uid)
+               return FALSE;
+
+       identity_uid = g_strstrip (g_strdup (identity_uid));
+       source = e_composer_header_table_ref_source (e_msg_composer_get_header_table (composer), 
identity_uid);
+
+       res = source != NULL;
+
+       g_clear_object (&source);
+       g_free (identity_uid);
+
+       return res;
+}
+
 /**
  * em_utils_edit_message:
  * @composer: an #EMsgComposer
@@ -1873,7 +1904,8 @@ em_utils_edit_message (EMsgComposer *composer,
        }
 
        if (folder) {
-               if (!folder_is_sent && !folder_is_drafts && !folder_is_outbox && !folder_is_templates) {
+               if ((!folder_is_sent && !folder_is_drafts && !folder_is_outbox && !folder_is_templates) ||
+                   (!folder_is_outbox && !folder_is_templates && !emcu_message_references_existing_account 
(message, composer))) {
                        CamelStore *store;
 
                        store = camel_folder_get_parent_store (folder);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]