forked from pool/evolution
49 lines
1.6 KiB
Diff
49 lines
1.6 KiB
Diff
--- plugins/prefer-plain/prefer-plain.c 2008/05/27 04:17:04 35553
|
|
+++ plugins/prefer-plain/prefer-plain.c 2008/05/27 12:38:24 35554
|
|
@@ -99,20 +99,41 @@
|
|
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);
|