From f46058baf808dcd4b3239f2dad03663ad1c27d0c Mon Sep 17 00:00:00 2001 From: Colin Clark Date: Tue, 17 Oct 2017 17:43:49 +0100 Subject: [PATCH] Fix #313, #521: zoom increment is not multiplicative https://github.com/BestImageViewer/geeqie/issues/313 https://github.com/BestImageViewer/geeqie/issues/521 --- src/pixbuf-renderer.c | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/pixbuf-renderer.c b/src/pixbuf-renderer.c index 57c2bea9..9c3cb1c6 100644 --- a/src/pixbuf-renderer.c +++ b/src/pixbuf-renderer.c @@ -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); } } -- 2.20.1