X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-tny-msg.c;h=78b4b75ccd64006b95578ff443cfa51947c9b1ec;hp=fab4375c9f568729654490ea2a509076d6028476;hb=4d39841513a3a7f7aa9d38ab97cb9fcc9171e80b;hpb=fc86f2291e127b737be601da0d1de3d33055610e diff --git a/src/modest-tny-msg.c b/src/modest-tny-msg.c index fab4375..78b4b75 100644 --- a/src/modest-tny-msg.c +++ b/src/modest-tny-msg.c @@ -350,7 +350,9 @@ add_attachments (TnyMimePart *part, GList *attachments_list, gboolean add_inline tny_mime_part_set_header_pair (attachment_part, "Content-Disposition", "attachment"); } - tny_mime_part_set_transfer_encoding (TNY_MIME_PART (attachment_part), "base64"); + if (!TNY_IS_MSG (old_attachment)) { + tny_mime_part_set_transfer_encoding (TNY_MIME_PART (attachment_part), "base64"); + } ret = tny_mime_part_add_part (TNY_MIME_PART (part), attachment_part); attached++; if (old_cid) @@ -657,6 +659,7 @@ create_reply_forward_mail (TnyMsg *msg, TnyHeader *header, const gchar *from, gchar *subject_prefix; gboolean no_text_part; gchar *parent_uid; + gboolean forward_as_attach = FALSE; if (header) g_object_ref (header); @@ -682,12 +685,14 @@ create_reply_forward_mail (TnyMsg *msg, TnyHeader *header, const gchar *from, /* when we're reply, include the text part if we have it, or nothing otherwise. */ if (is_reply) - new_msg = modest_formatter_quote (formatter, no_text_part ? NULL: body, header, + new_msg = modest_formatter_quote (formatter, body, header, attachments); else { if (no_text_part || (html_body && (strcmp (tny_mime_part_get_content_type (html_body), "text/html")==0))) { + forward_as_attach = TRUE; new_msg = modest_formatter_attach (formatter, msg, header); } else { + forward_as_attach = FALSE; new_msg = modest_formatter_inline (formatter, body, header, attachments); } @@ -735,7 +740,7 @@ create_reply_forward_mail (TnyMsg *msg, TnyHeader *header, const gchar *from, g_object_unref (G_OBJECT (header)); /* ugly to unref it here instead of in the calling func */ - if (!is_reply & !no_text_part) { + if (!is_reply & !forward_as_attach) { add_attachments (TNY_MIME_PART (new_msg), attachments, FALSE, NULL); } @@ -1249,11 +1254,15 @@ modest_tny_msg_header_get_all_recipients_list (TnyHeader *header) { GSList *recipients = NULL; gchar *from = NULL, *to = NULL, *cc = NULL, *bcc = NULL; - gchar *tmp = NULL, *old_tmp = NULL; + gchar *after_remove; + GString *buffer; + gboolean add_separator = TRUE; if (header == NULL) return NULL; + buffer = g_string_new (""); + from = tny_header_dup_from (header); to = tny_header_dup_to (header); cc = tny_header_dup_cc (header); @@ -1261,32 +1270,39 @@ modest_tny_msg_header_get_all_recipients_list (TnyHeader *header) recipients = NULL; if (from) { - tmp = g_strdup (from); - old_tmp = tmp; - g_free (from); + buffer = g_string_append (buffer, from); + add_separator = TRUE; } if (to) { - tmp = g_strjoin ("; ", old_tmp, to, NULL); - g_free (old_tmp); - old_tmp = tmp; - g_free (to); + if (add_separator) + buffer = g_string_append (buffer, "; "); + else + add_separator = TRUE; + + buffer = g_string_append (buffer, to); } if (cc) { - tmp = g_strjoin ("; ", old_tmp, cc, NULL); - g_free (old_tmp); - old_tmp = tmp; - g_free (cc); + if (add_separator) + buffer = g_string_append (buffer, "; "); + else + add_separator = TRUE; + + buffer = g_string_append (buffer, cc); } if (bcc) { - tmp = g_strjoin ("; ", old_tmp, bcc, NULL); - g_free (old_tmp); - old_tmp = tmp; - g_free (bcc); + if (add_separator) + buffer = g_string_append (buffer, "; "); + else + add_separator = TRUE; + + buffer = g_string_append (buffer, bcc); } - old_tmp = modest_text_utils_remove_duplicate_addresses (tmp); - recipients = modest_text_utils_split_addresses_list (old_tmp); - g_free (tmp); + after_remove = modest_text_utils_remove_duplicate_addresses (buffer->str); + g_string_free (buffer, TRUE); + + recipients = modest_text_utils_split_addresses_list (after_remove); + g_free (after_remove); return recipients; }