aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPo Lu2022-09-21 19:31:45 +0800
committerPo Lu2022-09-21 19:32:52 +0800
commit517268d943b95f0cb3bd7dfa11e02ade06d3abf4 (patch)
treefe0c1fa09b5232b4c3588ec41ecce496cc4d32e8
parent61e4964a8ad2e911928136c1f1667eb5ff55149e (diff)
downloademacs-517268d943b95f0cb3bd7dfa11e02ade06d3abf4.tar.gz
emacs-517268d943b95f0cb3bd7dfa11e02ade06d3abf4.zip
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.
-rw-r--r--lisp/pixel-scroll.el31
1 files changed, 16 insertions, 15 deletions
diff --git a/lisp/pixel-scroll.el b/lisp/pixel-scroll.el
index a04a34b01ea..10da9cb9abd 100644
--- a/lisp/pixel-scroll.el
+++ b/lisp/pixel-scroll.el
@@ -193,7 +193,7 @@ Nil means to not interpolate such scrolls."
193 :type 'float 193 :type 'float
194 :version "29.1") 194 :version "29.1")
195 195
196(defcustom pixel-scroll-precision-interpolation-factor 4.0 196(defcustom pixel-scroll-precision-interpolation-factor 2.0
197 "A factor to apply to the distance of an interpolated scroll." 197 "A factor to apply to the distance of an interpolated scroll."
198 :group 'mouse 198 :group 'mouse
199 :type 'float 199 :type 'float
@@ -635,18 +635,19 @@ to `pixel-scroll-precision-interpolation-factor'."
635 (selected-window)) 635 (selected-window))
636 (redisplay t)) 636 (redisplay t))
637 (sleep-for between-scroll) 637 (sleep-for between-scroll)
638 (setq time-elapsed (+ time-elapsed 638 (let ((time (float-time)))
639 (- (float-time) last-time)) 639 (setq time-elapsed (+ time-elapsed
640 percentage (/ time-elapsed total-time)) 640 (- time last-time))
641 (let* ((throw-on-input nil) 641 percentage (/ time-elapsed total-time))
642 (absolute-delta (* (min 1 percentage) delta factor)) 642 (let* ((throw-on-input nil)
643 (relative-delta (abs 643 (absolute-delta (* (min 1 percentage) delta factor))
644 (round (- absolute-delta last-delta))))) 644 (relative-delta (abs
645 (setq last-delta absolute-delta) 645 (round (- absolute-delta last-delta)))))
646 (if (< delta 0) 646 (setq last-delta absolute-delta)
647 (pixel-scroll-precision-scroll-down relative-delta) 647 (if (< delta 0)
648 (pixel-scroll-precision-scroll-up relative-delta))) 648 (pixel-scroll-precision-scroll-down relative-delta)
649 (setq last-time (float-time))) 649 (pixel-scroll-precision-scroll-up relative-delta)))
650 (setq last-time time)))
650 (if (< percentage 1) 651 (if (< percentage 1)
651 (progn 652 (progn
652 (set-window-parameter nil 'interpolated-scroll-remainder 653 (set-window-parameter nil 'interpolated-scroll-remainder
@@ -830,7 +831,7 @@ It is a vector of the form [ VELOCITY TIME SIGN ]."
830 ;; interpolation factor, 831 ;; interpolation factor,
831 ;; since we want exactly 1 832 ;; since we want exactly 1
832 ;; page to be scrolled. 833 ;; page to be scrolled.
833 0) 834 nil 1)
834 (cua-scroll-up))) 835 (cua-scroll-up)))
835 836
836(defun pixel-scroll-interpolate-up () 837(defun pixel-scroll-interpolate-up ()
@@ -838,7 +839,7 @@ It is a vector of the form [ VELOCITY TIME SIGN ]."
838 (interactive) 839 (interactive)
839 (if pixel-scroll-precision-interpolate-page 840 (if pixel-scroll-precision-interpolate-page
840 (pixel-scroll-precision-interpolate (window-text-height nil t) 841 (pixel-scroll-precision-interpolate (window-text-height nil t)
841 0) 842 nil 1)
842 (cua-scroll-down))) 843 (cua-scroll-down)))
843 844
844;;;###autoload 845;;;###autoload