From: Po Lu Date: Mon, 27 Dec 2021 01:02:20 +0000 (+0800) Subject: Store sign separately when accumulating precision scroll momentum X-Git-Tag: emacs-29.0.90~3424 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=736bf3aaa72e8fdd1c37bb9c8d003b17ffb612f9;p=emacs.git Store sign separately when accumulating precision scroll momentum * lisp/pixel-scroll.el (pixel-scroll-kinetic-state): Return vector in new format. (pixel-scroll-accumulate-velocity): Use new sign field. --- diff --git a/lisp/pixel-scroll.el b/lisp/pixel-scroll.el index 3abd4b2a723..e3a17295217 100644 --- a/lisp/pixel-scroll.el +++ b/lisp/pixel-scroll.el @@ -680,10 +680,10 @@ wheel." (defun pixel-scroll-kinetic-state () "Return the kinetic scroll state of the current window. -It is a vector of the form [ VELOCITY TIME ]." +It is a vector of the form [ VELOCITY TIME SIGN ]." (or (window-parameter nil 'kinetic-state) (set-window-parameter nil 'kinetic-state - (vector (make-ring 10) nil)))) + (vector (make-ring 10) nil nil)))) (defun pixel-scroll-accumulate-velocity (delta) "Accumulate DELTA into the current window's kinetic scroll state." @@ -693,9 +693,9 @@ It is a vector of the form [ VELOCITY TIME ]." (when (or (and time (> (- (float-time) time) 0.5)) (and (not (ring-empty-p ring)) (not (eq (< delta 0) - (< (cdr (ring-ref ring 0)) - 0))))) + (aref state 2))))) (aset state 0 (make-ring 10))) + (aset state 2 (< delta 0)) (ring-insert (aref state 0) (cons (aset state 1 (float-time)) delta))))