yes, we should - does gdk-pixbuff support this or will this be the step
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Albrecht Dreß - Johanna-Kirchner-Straße 13 - D-53123 Bonn (Germany) Phone (+49) 228 6199571 - mailto:albrecht dress arcor de _________________________________________________________________________
--- balsa-message.c.1 2004-06-13 13:12:27.000000000 +0200 +++ balsa-message.c 2004-06-13 13:43:26.000000000 +0200 @@ -429,7 +429,7 @@ gtk_image_new_from_stock("gnome-stock-attach", GTK_ICON_SIZE_LARGE_TOOLBAR)); gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 0); - g_signal_connect(button, "clicked", + g_signal_connect(button, "pressed", G_CALLBACK(balsa_headers_attachments_popup), bm); g_object_set_data(G_OBJECT(widget), BALSA_MESSAGE_ATTACHMENTS, ebox); @@ -1428,12 +1428,42 @@ static void part_info_init_image(BalsaMessage * bm, BalsaPartInfo * info) { + GdkPixbuf *pixbuf; GtkWidget *image; GtkWidget *evbox; + GError * load_err = NULL; libbalsa_message_body_save_temporary(info->body); + pixbuf = gdk_pixbuf_new_from_file (info->body->temp_filename, &load_err); + if (!pixbuf) { + if (load_err) { + balsa_information(LIBBALSA_INFORMATION_ERROR, + _("Error loading attached image: %s\n"), + load_err->message); + g_error_free(load_err); + } + part_info_init_unknown(bm, info); + return; + } + evbox = gtk_event_box_new(); - image = gtk_image_new_from_file(info->body->temp_filename); + if (gdk_pixbuf_get_width(pixbuf) > + bm->content->allocation.width + 2 * BIG_PADDING) { + GdkPixbuf * scaled_pixbuf; + gint dst_w, dst_h; + + dst_w = bm->content->allocation.width - 2 * BIG_PADDING; + if (dst_w < 32) + dst_w = 32; /* paranoia check */ + dst_h = (gfloat)dst_w / (gfloat)gdk_pixbuf_get_width(pixbuf) * + gdk_pixbuf_get_height(pixbuf) + 0.5; + scaled_pixbuf = gdk_pixbuf_scale_simple(pixbuf, dst_w, dst_h, + GDK_INTERP_BILINEAR); + g_object_unref(pixbuf); + pixbuf = scaled_pixbuf; + } + image = gtk_image_new_from_pixbuf(pixbuf); + g_object_unref(pixbuf); gtk_widget_show(image); gtk_container_add(GTK_CONTAINER(evbox), image); info->widget = evbox;
Attachment:
signature.asc
Description: PGP signature