aboutsummaryrefslogtreecommitdiff
path: root/src/textview.c
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-02-08 07:55:13 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-02-08 07:55:13 +0000
commiteefe7863dac9cc8046e369d14dfa0224495613ea (patch)
treed558d35059a2cadde2869b1b313698a9eee46213 /src/textview.c
parentbef4be6edbe3e5748ce6075a2ca65546e16a6d19 (diff)
implemented inline image display.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@97 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src/textview.c')
-rw-r--r--src/textview.c32
1 files changed, 31 insertions, 1 deletions
diff --git a/src/textview.c b/src/textview.c
index a7af0d01..b66d875a 100644
--- a/src/textview.c
+++ b/src/textview.c
@@ -195,7 +195,8 @@ TextView *textview_create(void)
scrolledwin = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwin),
- GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+ GTK_POLICY_AUTOMATIC,
+ GTK_POLICY_AUTOMATIC);
gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolledwin),
GTK_SHADOW_IN);
gtk_widget_set_size_request
@@ -541,6 +542,35 @@ static void textview_add_part(TextView *textview, MimeInfo *mimeinfo, FILE *fp)
if (mimeinfo->mime_type != MIME_TEXT &&
mimeinfo->mime_type != MIME_TEXT_HTML) {
gtk_text_buffer_insert(buffer, &iter, buf, -1);
+ if (mimeinfo->mime_type == MIME_IMAGE &&
+ prefs_common.inline_image) {
+ GdkPixbuf *pixbuf;
+ GError *error = NULL;
+ gchar *filename;
+
+ filename = procmime_get_tmp_file_name(mimeinfo);
+ if (procmime_get_part_fp(filename, fp, mimeinfo) < 0) {
+ g_warning("Can't get the image file.");
+ g_free(filename);
+ return;
+ }
+
+ pixbuf = gdk_pixbuf_new_from_file(filename, &error);
+ g_free(filename);
+ if (error != NULL) {
+ g_warning("%s\n", error->message);
+ g_error_free(error);
+ }
+ if (!pixbuf) {
+ g_warning("Can't load the image.");
+ return;
+ }
+
+ gtk_text_buffer_insert_pixbuf(buffer, &iter, pixbuf);
+ gtk_text_buffer_insert(buffer, &iter, "\n", 1);
+
+ g_object_unref(G_OBJECT(pixbuf));
+ }
} else {
if (!mimeinfo->main &&
mimeinfo->parent &&