changeset 2636:22479efb61d7

Fix #313, #521: zoom increment is not multiplicative https://github.com/BestImageViewer/geeqie/issues/313 https://github.com/BestImageViewer/geeqie/issues/521
author Colin Clark <colin.clark@cclark.uk>
date Tue, 17 Oct 2017 17:43:49 +0100
parents e2b9dff749d3
children 78ab69af0d91
files src/pixbuf-renderer.c
diffstat 1 files changed, 20 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/pixbuf-renderer.c	Mon Oct 16 10:15:19 2017 +0100
+++ b/src/pixbuf-renderer.c	Tue Oct 17 17:43:49 2017 +0100
@@ -1251,24 +1251,38 @@
 
 	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);
 			}
 		}