emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master ff9360f: Clear precision scroll interpolation when direction chan


From: Po Lu
Subject: master ff9360f: Clear precision scroll interpolation when direction changes
Date: Sat, 11 Dec 2021 21:55:50 -0500 (EST)

branch: master
commit ff9360f4da351d25f1f9fb1ed9a78ce9db321ac4
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>

    Clear precision scroll interpolation when direction changes
    
    * lisp/pixel-scroll.el (pixel-scroll-precision-interpolate):
    Clear scroll interpolation when direction changes.
---
 lisp/pixel-scroll.el | 66 +++++++++++++++++++++++++++++-----------------------
 1 file changed, 37 insertions(+), 29 deletions(-)

diff --git a/lisp/pixel-scroll.el b/lisp/pixel-scroll.el
index 336b555..0e22ef2 100644
--- a/lisp/pixel-scroll.el
+++ b/lisp/pixel-scroll.el
@@ -542,35 +542,43 @@ animation."
                (< (- (float-time) time) 1.0)
                (eq (< delta 0) (< rem 0)))
       (setq delta (+ delta rem)))
-    (while-no-input
-      (unwind-protect
-          (while (< percentage 1)
-            (redisplay t)
-            (sleep-for between-scroll)
-            (setq time-elapsed (+ time-elapsed
-                                  (- (float-time) last-time))
-                  percentage (/ time-elapsed total-time))
-            (let ((throw-on-input nil))
-              (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))))))
-            (setq last-time (float-time)))
-        (if (< percentage 1)
-            (progn
-              (set-window-parameter nil 'interpolated-scroll-remainder
-                                    (* delta (- 1 percentage)))
-              (set-window-parameter nil 'interpolated-scroll-remainder-time
-                                    (float-time)))
-          (set-window-parameter nil
-                                'interpolated-scroll-remainder
-                                nil)
-          (set-window-parameter nil
-                                'interpolated-scroll-remainder-time
-                                nil))))))
+    (if (or (null rem)
+            (eq (< delta 0) (< rem 0)))
+        (while-no-input
+          (unwind-protect
+              (while (< percentage 1)
+                (redisplay t)
+                (sleep-for between-scroll)
+                (setq time-elapsed (+ time-elapsed
+                                      (- (float-time) last-time))
+                      percentage (/ time-elapsed total-time))
+                (let ((throw-on-input nil))
+                  (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))))))
+                (setq last-time (float-time)))
+            (if (< percentage 1)
+                (progn
+                  (set-window-parameter nil 'interpolated-scroll-remainder
+                                        (* delta (- 1 percentage)))
+                  (set-window-parameter nil 'interpolated-scroll-remainder-time
+                                        (float-time)))
+              (set-window-parameter nil
+                                    'interpolated-scroll-remainder
+                                    nil)
+              (set-window-parameter nil
+                                    'interpolated-scroll-remainder-time
+                                    nil))))
+      (set-window-parameter nil
+                            'interpolated-scroll-remainder
+                            nil)
+      (set-window-parameter nil
+                            'interpolated-scroll-remainder-time
+                            nil))))
 
 (defun pixel-scroll-precision-scroll-up (delta)
   "Scroll the current window up by DELTA pixels."



reply via email to

[Prev in Thread] Current Thread [Next in Thread]