Fix #313, #521: zoom increment is not multiplicative
authorColin Clark <colin.clark@cclark.uk>
Tue, 17 Oct 2017 16:43:49 +0000 (17:43 +0100)
committerColin Clark <colin.clark@cclark.uk>
Tue, 17 Oct 2017 16:43:49 +0000 (17:43 +0100)
https://github.com/BestImageViewer/geeqie/issues/313
https://github.com/BestImageViewer/geeqie/issues/521

src/pixbuf-renderer.c

index 57c2bea..9c3cb1c 100644 (file)
@@ -1251,24 +1251,38 @@ static void pr_zoom_adjust_real(PixbufRenderer *pr, gdouble increment,
 
        if (increment < 0.0)
                {
-               if (zoom >= 1.0 && zoom + increment < 1.0)
+               if (zoom >= 1.0)
                        {
-                       zoom = zoom + increment - 2.0;
+                       if (zoom / -(increment - 1.0) < 1.0)
+                               {
+                               zoom = 1.0 / (zoom / (increment - 1.0));
+                               }
+                       else
+                               {
+                               zoom = zoom / -(increment - 1.0) ;
+                               }
                        }
                else
                        {
-                       zoom = zoom + increment;
+                       zoom = zoom * -(increment - 1.0);
                        }
                }
        else
                {
-               if (zoom <= -1.0 && zoom + increment > -1.0)
+               if (zoom <= -1.0 )
                        {
-                       zoom = zoom + increment + 2.0;
+                       if (zoom / (increment + 1.0) > -1.0)
+                               {
+                               zoom = -(1.0 / (zoom / (increment + 1.0)));
+                               }
+                       else
+                               {
+                               zoom = zoom / (increment + 1.0) ;
+                               }
                        }
                else
                        {
-                       zoom = zoom + increment;
+                       zoom = zoom * (increment + 1.0);
                        }
                }