aboutsummaryrefslogtreecommitdiff
path: root/src/textview.c
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2013-05-14 09:17:37 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2013-05-14 09:17:37 +0000
commit3b87da252f54406f6ded41f0b45f6f6d7dacc15b (patch)
tree0047c8d4b0f462f50e501448eda5772a6dd7a049 /src/textview.c
parent0efce4ac1ec396cd9d389a607c2a69bbd505dd8a (diff)
added an option to prefer HTML part in multipart/alternative.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@3253 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src/textview.c')
-rw-r--r--src/textview.c43
1 files changed, 32 insertions, 11 deletions
diff --git a/src/textview.c b/src/textview.c
index b40ca56a..627fcdbf 100644
--- a/src/textview.c
+++ b/src/textview.c
@@ -1,6 +1,6 @@
/*
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2012 Hiroyuki Yamamoto
+ * Copyright (C) 1999-2013 Hiroyuki Yamamoto
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -1076,9 +1076,9 @@ static void textview_add_part(TextView *textview, MimeInfo *mimeinfo, FILE *fp)
} else {
/* text part */
gtk_text_buffer_insert(buffer, &iter, "\n", 1);
- if (!mimeinfo->main &&
- mimeinfo->parent &&
- mimeinfo->parent->children != mimeinfo)
+ if (mimeinfo->mime_type == MIME_TEXT_HTML ||
+ (!mimeinfo->main && mimeinfo->parent &&
+ mimeinfo->parent->children != mimeinfo))
textview_add_part_widget(textview, &iter, mimeinfo, buf);
textview_write_body(textview, mimeinfo, fp, charset);
}
@@ -1142,13 +1142,34 @@ static void textview_add_parts(TextView *textview, MimeInfo *mimeinfo, FILE *fp)
level = mimeinfo->level;
for (;;) {
- textview_add_part(textview, mimeinfo, fp);
- if (mimeinfo->parent && mimeinfo->parent->content_type &&
- !g_ascii_strcasecmp(mimeinfo->parent->content_type,
- "multipart/alternative"))
- mimeinfo = mimeinfo->parent->next;
- else
- mimeinfo = procmime_mimeinfo_next(mimeinfo);
+ if (mimeinfo->mime_type == MIME_MULTIPART &&
+ mimeinfo->content_type &&
+ !g_ascii_strcasecmp(mimeinfo->content_type,
+ "multipart/alternative")) {
+ MimeInfo *preferred_part = mimeinfo->children;
+ MimeInfo *child;
+
+ if (prefs_common.alt_prefer_html) {
+ for (child = mimeinfo->children; child != NULL; child = child->next) {
+ if (child->mime_type == MIME_TEXT_HTML) {
+ preferred_part = child;
+ break;
+ }
+ }
+ }
+
+ if (preferred_part) {
+ textview_add_part(textview, preferred_part, fp);
+ mimeinfo = preferred_part;
+ while (mimeinfo->next)
+ mimeinfo = mimeinfo->next;
+ }
+ } else {
+ textview_add_part(textview, mimeinfo, fp);
+ }
+
+ mimeinfo = procmime_mimeinfo_next(mimeinfo);
+
if (!mimeinfo || mimeinfo->level <= level)
break;
}