summaryrefslogtreecommitdiff
path: root/lisp/pixel-scroll.el
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2022-09-21 19:31:45 +0800
committerPo Lu <luangruo@yahoo.com>2022-09-21 19:32:52 +0800
commit517268d943b95f0cb3bd7dfa11e02ade06d3abf4 (patch)
treefe0c1fa09b5232b4c3588ec41ecce496cc4d32e8 /lisp/pixel-scroll.el
parent61e4964a8ad2e911928136c1f1667eb5ff55149e (diff)
downloademacs-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.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."
: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