diff options
author | Po Lu <luangruo@yahoo.com> | 2022-09-21 19:31:45 +0800 |
---|---|---|
committer | Po Lu <luangruo@yahoo.com> | 2022-09-21 19:32:52 +0800 |
commit | 517268d943b95f0cb3bd7dfa11e02ade06d3abf4 (patch) | |
tree | fe0c1fa09b5232b4c3588ec41ecce496cc4d32e8 /lisp/pixel-scroll.el | |
parent | 61e4964a8ad2e911928136c1f1667eb5ff55149e (diff) | |
download | emacs-517268d943b95f0cb3bd7dfa11e02ade06d3abf4.tar.gz |
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.
Diffstat (limited to 'lisp/pixel-scroll.el')
-rw-r--r-- | lisp/pixel-scroll.el | 31 |
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." :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 |