diff options
author | Milan Crha <mcrha@redhat.com> | 2008-05-27 20:38:24 +0800 |
---|---|---|
committer | Milan Crha <mcrha@src.gnome.org> | 2008-05-27 20:38:24 +0800 |
commit | e0afa81375f31758b55366e43ca68c02a50ec214 (patch) | |
tree | 6fbca631953c48d9e4ec6258aed5cdca4ff236e5 /plugins | |
parent | c3d6e8a11a7c0b9886da474f8c964d9be15475fc (diff) | |
download | gsoc2013-evolution-e0afa81375f31758b55366e43ca68c02a50ec214.tar gsoc2013-evolution-e0afa81375f31758b55366e43ca68c02a50ec214.tar.gz gsoc2013-evolution-e0afa81375f31758b55366e43ca68c02a50ec214.tar.bz2 gsoc2013-evolution-e0afa81375f31758b55366e43ca68c02a50ec214.tar.lz gsoc2013-evolution-e0afa81375f31758b55366e43ca68c02a50ec214.tar.xz gsoc2013-evolution-e0afa81375f31758b55366e43ca68c02a50ec214.tar.zst gsoc2013-evolution-e0afa81375f31758b55366e43ca68c02a50ec214.zip |
** Fix for bug #532384
2008-05-27 Milan Crha <mcrha@redhat.com>
** Fix for bug #532384
* prefer-plain.c: (org_gnome_prefer_plain_multipart_alternative):
Choose the text/html part in normal mode only if the alrenative
multipart contains also a text/plain part.
svn path=/trunk/; revision=35554
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/prefer-plain/ChangeLog | 8 | ||||
-rw-r--r-- | plugins/prefer-plain/prefer-plain.c | 29 |
2 files changed, 33 insertions, 4 deletions
diff --git a/plugins/prefer-plain/ChangeLog b/plugins/prefer-plain/ChangeLog index 6780f577d1..274dde355c 100644 --- a/plugins/prefer-plain/ChangeLog +++ b/plugins/prefer-plain/ChangeLog @@ -1,3 +1,11 @@ +2008-05-27 Milan Crha <mcrha@redhat.com> + + ** Fix for bug #532384 + + * prefer-plain.c: (org_gnome_prefer_plain_multipart_alternative): + Choose the text/html part in normal mode only if the alrenative + multipart contains also a text/plain part. + 2008-04-17 Milan Crha <mcrha@redhat.com> ** Fix for bug #451976 diff --git a/plugins/prefer-plain/prefer-plain.c b/plugins/prefer-plain/prefer-plain.c index 0c5d57b54e..0365c297e8 100644 --- a/plugins/prefer-plain/prefer-plain.c +++ b/plugins/prefer-plain/prefer-plain.c @@ -99,20 +99,41 @@ org_gnome_prefer_plain_multipart_alternative(void *ep, EMFormatHookTarget *t) int i, nparts, partidlen, displayid = 0; if (epp_mode == EPP_NORMAL) { + gboolean have_plain = FALSE; + /* Try to find text/html part even when not as last and force to show it. Old handler will show the last part of multipart/alternate, but if we - can offer HTML, then offer it, regardless of position in multipart. */ + can offer HTML, then offer it, regardless of position in multipart. + But do this only when have text/plain in a list, because otherwise it + can be something else (like outlooks meeting invites with only text/html + part and calendar part). + */ nparts = camel_multipart_get_number (mp); for (i = 0; i < nparts; i++) { + CamelContentType *content_type; + part = camel_multipart_get_part (mp, i); - if (part && camel_content_type_is (camel_mime_part_get_content_type (part), "text", "html")) { + + if (!part) + continue; + + content_type = camel_mime_part_get_content_type (part); + + if (camel_content_type_is (content_type, "text", "html")) { displayid = i; display_part = part; - break; + + if (have_plain) + break; + } else if (camel_content_type_is (content_type, "text", "plain")) { + have_plain = TRUE; + + if (display_part) + break; } } - if (display_part) { + if (display_part && have_plain) { g_string_append_printf (t->format->part_id, ".alternative.%d", displayid); em_format_part_as (t->format, t->stream, display_part, "text/html"); g_string_truncate (t->format->part_id, partidlen); |