From fb591577393c130df48cb33af455bf44d8875897 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Vr=C3=A1til?= Date: Fri, 17 Aug 2012 14:43:12 +0200 Subject: Bug #682019 - Always display text/plain when there's nothing else in multipart/alternative --- modules/prefer-plain/e-mail-parser-prefer-plain.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'modules/prefer-plain') diff --git a/modules/prefer-plain/e-mail-parser-prefer-plain.c b/modules/prefer-plain/e-mail-parser-prefer-plain.c index 714e4e462e..b5f8db2365 100644 --- a/modules/prefer-plain/e-mail-parser-prefer-plain.c +++ b/modules/prefer-plain/e-mail-parser-prefer-plain.c @@ -181,6 +181,8 @@ empe_prefer_plain_parse (EMailParserExtension *extension, gint i, nparts, partidlen; GSList *parts; CamelContentType *ct; + gboolean has_html; + GSList *plain_text_parts; emp_pp = (EMailParserPreferPlain *) extension; @@ -222,6 +224,7 @@ empe_prefer_plain_parse (EMailParserExtension *extension, } nparts = camel_multipart_get_number (mp); + has_html = FALSE; for (i = 0; i < nparts; i++) { CamelMimePart *sp; @@ -243,27 +246,21 @@ empe_prefer_plain_parse (EMailParserExtension *extension, } else { sparts = e_mail_parser_parse_part ( parser, sp, part_id, cancellable); - hide_parts (sparts); } } else { sparts = e_mail_parser_parse_part ( parser, sp, part_id, cancellable); } + has_html = TRUE; parts = g_slist_concat (parts, sparts); continue; } if (camel_content_type_is (ct, "text", "plain")) { - sparts = e_mail_parser_parse_part ( - parser, sp, part_id, cancellable); - - if (emp_pp->mode == PREFER_HTML) { - hide_parts (sparts); - } - - parts = g_slist_concat (parts, sparts); + plain_text_parts = e_mail_parser_parse_part ( + parser, sp, part_id, cancellable); continue; } @@ -325,6 +322,14 @@ empe_prefer_plain_parse (EMailParserExtension *extension, cancellable)); } + /* Don't hide the plain text if there's nothing else to display */ + if ((emp_pp->mode == PREFER_HTML) && has_html) { + hide_parts (plain_text_parts); + } + + parts = g_slist_concat (parts, plain_text_parts); + + g_string_truncate (part_id, partidlen); return parts; -- cgit v1.2.3