]> uap-core.de Git - note.git/commitdiff
improve imageviewer main
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Mon, 7 Sep 2026 16:57:18 +0000 (18:57 +0200)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Mon, 7 Sep 2026 16:57:18 +0000 (18:57 +0200)
ui/gtk/image.c
ui/gtk/image.h

index 0ed45c75ccd433c741626d841b2bae2b72b8dcbd..af5f45ca5831f1e63c09f23506e47fffdc6c03f2 100644 (file)
@@ -206,6 +206,8 @@ UIWIDGET ui_imageviewer_create(UiObject *obj, UiImageViewerArgs *args) {
 
 static void imageviewer_reset(UiImageViewer *imgviewer) {
     imgviewer->isautoscaled = FALSE;
 
 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;
     imgviewer->transx = 0;
     imgviewer->transy;
     imgviewer->begin_transx = 0;
@@ -300,7 +302,10 @@ void ui_cairo_draw_image(UiImageViewer *imgviewer, cairo_t *cr, int width, int h
     // 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 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;
             scale = dwidth / dpixwidth;
             if(dpixheight * scale > dheight) {
                 scale = dheight / dpixheight;
index 0721032d26db956dfc3ccfb8bd123c4d2f272ccd..a95efede3a1886e3d163df5f2e9160fc891c9e74 100644 (file)
@@ -57,6 +57,8 @@ typedef struct UiImageViewer {
     UiBool isautoscaled;
     double user_scale;
     double scale;
     UiBool isautoscaled;
     double user_scale;
     double scale;
+    int autoscaled_for_width;
+    int autoscaled_for_height;
     
     ui_callback onbuttonpress;
     void *onbuttonpressdata;
     
     ui_callback onbuttonpress;
     void *onbuttonpressdata;