+2008-02-05 [colin] 3.2.0cvs76
+
+ * src/messageview.c
+ * src/mimeview.c
+ * src/mimeview.h
+ Special case text/calendar parts: if there's one in
+ the mail, and a plugin handling text/calendar is
+ loaded, show that part. That'll avoid rendering
+ meetings as plain text, which just looks broken to
+ many users.
+
2008-02-04 [colin] 3.2.0cvs75
* src/mainwindow.c
( cvs diff -u -r 1.36.2.133 -r 1.36.2.134 src/common/utils.c; ) > 3.2.0cvs73.patchset
( cvs diff -u -r 1.382.2.435 -r 1.382.2.436 src/compose.c; ) > 3.2.0cvs74.patchset
( cvs diff -u -r 1.274.2.231 -r 1.274.2.232 src/mainwindow.c; ) > 3.2.0cvs75.patchset
+( cvs diff -u -r 1.94.2.169 -r 1.94.2.170 src/messageview.c; cvs diff -u -r 1.83.2.126 -r 1.83.2.127 src/mimeview.c; cvs diff -u -r 1.20.2.23 -r 1.20.2.24 src/mimeview.h; ) > 3.2.0cvs76.patchset
strcasecmp(mimeinfo->subtype, "plain"))
&& (mimeinfo->type != MIMETYPE_MULTIPART ||
strcasecmp(mimeinfo->subtype, "signed"))) {
- if (strcasecmp(mimeinfo->subtype, "html"))
+ if (strcasecmp(mimeinfo->subtype, "html")) {
mimeview_show_part(messageview->mimeview,mimeinfo);
- else if (prefs_common.invoke_plugin_on_html)
- mimeview_select_mimepart_icon(messageview->mimeview,mimeinfo);
+ goto done;
+ } else if (prefs_common.invoke_plugin_on_html) {
+ mimeview_select_mimepart_icon(messageview->mimeview, mimeinfo);
+ goto done;
+ }
}
-
+ if (!all_headers && mimeinfo &&
+ mimeinfo->type == MIMETYPE_MULTIPART &&
+ mimeview_has_viewer_for_content_type(messageview->mimeview, "text/calendar")) {
+ /* look for a calendar part or it looks really strange */
+ while (mimeinfo) {
+ if (mimeinfo->type == MIMETYPE_TEXT &&
+ !strcasecmp(mimeinfo->subtype, "calendar")) {
+ mimeview_select_mimepart_icon(messageview->mimeview, mimeinfo);
+ goto done;
+ }
+ mimeinfo = procmime_mimeinfo_next(mimeinfo);
+ }
+ }
+done:
g_free(file);
return 0;
return viewer;
}
+gboolean mimeview_has_viewer_for_content_type(MimeView *mimeview, const gchar *content_type)
+{
+ return (get_viewer_for_content_type(mimeview, content_type) != NULL);
+}
+
static MimeViewer *get_viewer_for_mimeinfo(MimeView *mimeview, MimeInfo *partinfo)
{
gchar *content_type = NULL;
gint mimeview_get_selected_part_num (MimeView *mimeview);
void mimeview_select_part_num (MimeView *mimeview,
gint i);
-
+gboolean mimeview_has_viewer_for_content_type
+ (MimeView *mimeview,
+ const gchar *content_type);
#ifdef __cplusplus
}