emacs-diffs
[Top][All Lists]
Advanced

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

master 517268d943 2/2: Small adjustments to precision pixel scrolling


From: Po Lu
Subject: master 517268d943 2/2: Small adjustments to precision pixel scrolling
Date: Wed, 21 Sep 2022 07:33:06 -0400 (EDT)

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

    Small adjustments to precision pixel scrolling
    
    * lisp/pixel-scroll.el
    (pixel-scroll-precision-interpolation-factor): Adjust for
    increased accuracy.
    (pixel-scroll-precision-interpolate): Slightly decrease accuracy
    in exchange for consing less floats.
    (pixel-scroll-interpolate-down, pixel-scroll-interpolate-up):
    Fix usage of function.
---
 lisp/pixel-scroll.el | 31 ++++++++++++++++---------------
 1 file changed, 16 insertions(+), 15 deletions(-)

diff --git a/lisp/pixel-scroll.el b/lisp/pixel-scroll.el
index a04a34b01e..10da9cb9ab 100644
--- a/lisp/pixel-scroll.el
+++ b/lisp/pixel-scroll.el
@@ -193,7 +193,7 @@ Nil means to not interpolate such scrolls."
   :type 'float
   :version "29.1")
 
-(defcustom pixel-scroll-precision-interpolation-factor 4.0
+(defcustom pixel-scroll-precision-interpolation-factor 2.0
   "A factor to apply to the distance of an interpolated scroll."
   :group 'mouse
   :type 'float
@@ -635,18 +635,19 @@ to `pixel-scroll-precision-interpolation-factor'."
                                           (selected-window))
                   (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)
-                       (absolute-delta (* (min 1 percentage) delta factor))
-                       (relative-delta (abs
-                                        (round (- absolute-delta 
last-delta)))))
-                  (setq last-delta absolute-delta)
-                  (if (< delta 0)
-                      (pixel-scroll-precision-scroll-down relative-delta)
-                    (pixel-scroll-precision-scroll-up relative-delta)))
-                (setq last-time (float-time)))
+                (let ((time (float-time)))
+                  (setq time-elapsed (+ time-elapsed
+                                        (- time last-time))
+                        percentage (/ time-elapsed total-time))
+                  (let* ((throw-on-input nil)
+                         (absolute-delta (* (min 1 percentage) delta factor))
+                         (relative-delta (abs
+                                          (round (- absolute-delta 
last-delta)))))
+                    (setq last-delta absolute-delta)
+                    (if (< delta 0)
+                        (pixel-scroll-precision-scroll-down relative-delta)
+                      (pixel-scroll-precision-scroll-up relative-delta)))
+                  (setq last-time time)))
             (if (< percentage 1)
                 (progn
                   (set-window-parameter nil 'interpolated-scroll-remainder
@@ -830,7 +831,7 @@ It is a vector of the form [ VELOCITY TIME SIGN ]."
                                           ;; interpolation factor,
                                           ;; since we want exactly 1
                                           ;; page to be scrolled.
-                                          0)
+                                          nil 1)
     (cua-scroll-up)))
 
 (defun pixel-scroll-interpolate-up ()
@@ -838,7 +839,7 @@ It is a vector of the form [ VELOCITY TIME SIGN ]."
   (interactive)
   (if pixel-scroll-precision-interpolate-page
       (pixel-scroll-precision-interpolate (window-text-height nil t)
-                                          0)
+                                          nil 1)
     (cua-scroll-down)))
 
 ;;;###autoload



reply via email to

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