imageviewer: keep autoscaling when the widget is resized (GTK) default tip

Mon, 07 Sep 2026 18:55:59 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Mon, 07 Sep 2026 18:55:59 +0200
changeset 1242
7f142ba9fd5f
parent 1241
a23d6609e70e

imageviewer: keep autoscaling when the widget is resized (GTK)

ui/gtk/image.c file | annotate | diff | comparison | revisions
ui/gtk/image.h file | annotate | diff | comparison | revisions
--- a/ui/gtk/image.c	Fri Sep 04 20:45:12 2026 +0200
+++ b/ui/gtk/image.c	Mon Sep 07 18:55:59 2026 +0200
@@ -206,6 +206,8 @@
 
 static void imageviewer_reset(UiImageViewer *imgviewer) {
     imgviewer->isautoscaled = FALSE;
+    imgviewer->autoscaled_for_width = 0;
+    imgviewer->autoscaled_for_height = 0;
     imgviewer->transx = 0;
     imgviewer->transy;
     imgviewer->begin_transx = 0;
@@ -300,7 +302,10 @@
     // if autoscale is enabled, scale the image to fill available space
     // if useradjustable is also enabled, the autoscaling is only done once
     if(imgviewer->autoscale && imgviewer->scale != 0) {
-        if(!imgviewer->isautoscaled) {
+        if(!imgviewer->isautoscaled || 
+           width != imgviewer->autoscaled_for_width || 
+           height != imgviewer->autoscaled_for_height)
+        {
             scale = dwidth / dpixwidth;
             if(dpixheight * scale > dheight) {
                 scale = dheight / dpixheight;
--- a/ui/gtk/image.h	Fri Sep 04 20:45:12 2026 +0200
+++ b/ui/gtk/image.h	Mon Sep 07 18:55:59 2026 +0200
@@ -57,6 +57,8 @@
     UiBool isautoscaled;
     double user_scale;
     double scale;
+    int autoscaled_for_width;
+    int autoscaled_for_height;
     
     ui_callback onbuttonpress;
     void *onbuttonpressdata;

mercurial