commit ee631db42de5a198fbb0516fae6ba51a08843747
parent 3ba140dd7068c4388999a6b5ffdd76c76f89cd4f
Author: Paul <paul@claws-mail.org>
Date: Mon, 17 Aug 2020 10:47:25 +0100
improve image display, particularly for large images, especially if taller than they are wide
Diffstat:
1 file changed, 17 insertions(+), 26 deletions(-)
diff --git a/src/gtk/gtkutils.c b/src/gtk/gtkutils.c
@@ -1777,32 +1777,6 @@ GdkPixbuf *claws_load_pixbuf_fitting(GdkPixbuf *src_pixbuf, int box_width,
}
}
- w = gdk_pixbuf_get_width(pixbuf);
- h = gdk_pixbuf_get_height(pixbuf);
-
- if (angle == 90 || angle == 270) {
- avail_height = box_width;
- avail_width = box_height;
- } else {
- avail_width = box_width;
- avail_height = box_height;
- }
-
- /* Scale first */
- if (box_width != -1 && box_height != -1 && avail_width - 100 > 0) {
- if (w > avail_width) {
- h = (avail_width * h) / w;
- w = avail_width;
- }
- if (h > avail_height) {
- w = (avail_height * w) / h;
- h = avail_height;
- }
- t_pixbuf = gdk_pixbuf_scale_simple(pixbuf,
- w, h, GDK_INTERP_BILINEAR);
- g_object_unref(pixbuf);
- pixbuf = t_pixbuf;
- }
/* Rotate if needed */
if (angle != 0) {
@@ -1825,6 +1799,23 @@ GdkPixbuf *claws_load_pixbuf_fitting(GdkPixbuf *src_pixbuf, int box_width,
pixbuf = t_pixbuf;
}
+ w = gdk_pixbuf_get_width(pixbuf);
+ h = gdk_pixbuf_get_height(pixbuf);
+
+ avail_width = box_width;
+ avail_height = box_height;
+
+ if (box_width != -1 && box_height != -1 && avail_width - 100 > 0) {
+ if (w > avail_width || h > avail_height) {
+ h = (avail_width * h) / w;
+ w = avail_width;
+ }
+ t_pixbuf = gdk_pixbuf_scale_simple(pixbuf,
+ w, h, GDK_INTERP_BILINEAR);
+ g_object_unref(pixbuf);
+ pixbuf = t_pixbuf;
+ }
+
return pixbuf;
}