[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."
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master ff9360f: Clear precision scroll interpolation when direction changes,
Po Lu <=