rework image viewer
[claws.git] / src / gtk / gtkutils.c
index 0e8bf48915f42751e3ad364b74df98aef8377dc1..60bf674fc039f138b2227fffad29880326127a8c 100644 (file)
@@ -1707,8 +1707,8 @@ claws_input_add    (gint        source,
  *
  * @return a GdkPixbuf
  */
-GdkPixbuf *claws_load_pixbuf_fitting(GdkPixbuf *src_pixbuf, int box_width,
-                                    int box_height)
+GdkPixbuf *claws_load_pixbuf_fitting(GdkPixbuf *src_pixbuf, gboolean inline_img,
+                                    gboolean fit_img_height, int box_width, int box_height)
 {
        gint w, h, orientation, angle;
        gint avail_width, avail_height;
@@ -1779,9 +1779,20 @@ GdkPixbuf *claws_load_pixbuf_fitting(GdkPixbuf *src_pixbuf, int 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;
+               if (inline_img || fit_img_height) {
+                       if (w > avail_width) {
+                               h = (avail_width * h) / w;
+                               w = avail_width;
+                       }
+                       if (h > avail_height) {
+                               w = (avail_height * w) / h;
+                               h = avail_height;
+                       }
+               } else {
+                       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);