From bf79dad3f20345ddf095325ce22c0f2a3408d3ba Mon Sep 17 00:00:00 2001 From: Po Lu Date: Wed, 8 Dec 2021 13:40:12 +0800 Subject: [PATCH] Make interpolated scrolling work better * lisp/pixel-scroll.el (pixel-scroll-precision-interpolate): Stop using `while-no-input'. --- lisp/pixel-scroll.el | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/lisp/pixel-scroll.el b/lisp/pixel-scroll.el index 10736de2ae4..6191c0530c4 100644 --- a/lisp/pixel-scroll.el +++ b/lisp/pixel-scroll.el @@ -541,24 +541,23 @@ the height of the current window." "Interpolate a scroll of DELTA pixels. This results in the window being scrolled by DELTA pixels with an animation." - (while-no-input - (let ((percentage 0) - (total-time pixel-scroll-precision-interpolation-total-time) - (factor pixel-scroll-precision-interpolation-factor) - (time-elapsed 0.0) - (between-scroll 0.001)) - (while (< percentage 1) - (sit-for between-scroll) - (setq time-elapsed (+ time-elapsed between-scroll) - percentage (/ time-elapsed total-time)) - (if (< delta 0) - (pixel-scroll-precision-scroll-down - (ceiling (abs (* (* delta factor) - (/ between-scroll total-time))))) - (pixel-scroll-precision-scroll-up - (ceiling (* (* delta factor) - (/ between-scroll total-time))))) - (redisplay t))))) + (let ((percentage 0) + (total-time pixel-scroll-precision-interpolation-total-time) + (factor pixel-scroll-precision-interpolation-factor) + (time-elapsed 0.0) + (between-scroll 0.001)) + (while (< percentage 1) + (sit-for between-scroll) + (setq time-elapsed (+ time-elapsed between-scroll) + percentage (/ time-elapsed total-time)) + (if (< delta 0) + (pixel-scroll-precision-scroll-down + (ceiling (abs (* (* delta factor) + (/ between-scroll total-time))))) + (pixel-scroll-precision-scroll-up + (ceiling (* (* delta factor) + (/ between-scroll total-time))))) + (redisplay t)))) (defun pixel-scroll-precision-scroll-up (delta) "Scroll the current window up by DELTA pixels." -- 2.39.2