aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPo Lu2021-12-09 17:57:25 +0800
committerPo Lu2021-12-09 17:57:25 +0800
commit948a8936ba26c7823f716bb1041ee3f309bb9ece (patch)
treecde792d86084cf44705058848d78823d22148473
parent07d95325e4bb955c4b660f632c77c4693374282f (diff)
downloademacs-948a8936ba26c7823f716bb1041ee3f309bb9ece.tar.gz
emacs-948a8936ba26c7823f716bb1041ee3f309bb9ece.zip
Make precision scrolling up work over display strings
* lisp/pixel-scroll.el (pixel-point-and-height-at-unseen-line): Use `window-text-pixel-size'. (pixel-scroll-precision-scroll-up-page): Use delta as vscroll directly.
-rw-r--r--lisp/pixel-scroll.el20
1 files changed, 4 insertions, 16 deletions
diff --git a/lisp/pixel-scroll.el b/lisp/pixel-scroll.el
index 66aa480b708..ead841c9823 100644
--- a/lisp/pixel-scroll.el
+++ b/lisp/pixel-scroll.el
@@ -406,7 +406,9 @@ window, and the pixel height of that line."
406 (if (bobp) 406 (if (bobp)
407 (point-min) 407 (point-min)
408 (vertical-motion -1) 408 (vertical-motion -1)
409 (setq line-height (line-pixel-height)) 409 (setq line-height
410 (cdr (window-text-pixel-size nil (point)
411 pos0)))
410 (point))))) 412 (point)))))
411 ;; restore initial position 413 ;; restore initial position
412 (set-window-start nil pos0 t) 414 (set-window-start nil pos0 t)
@@ -530,21 +532,7 @@ the height of the current window."
530 (goto-char (car position))) 532 (goto-char (car position)))
531 (setq delta (- delta (cdr position))))) 533 (setq delta (- delta (cdr position)))))
532 (when (< delta 0) 534 (when (< delta 0)
533 (if-let* ((desired-pos (posn-at-x-y 0 (+ (- delta) 535 (set-window-vscroll nil (- delta) t))))))
534 (window-tab-line-height)
535 (window-header-line-height))))
536 (desired-start (posn-point desired-pos))
537 (desired-vscroll (cdr (posn-object-x-y desired-pos))))
538 (progn
539 (set-window-start nil (if (zerop (window-hscroll))
540 desired-start
541 (save-excursion
542 (goto-char desired-start)
543 (beginning-of-visual-line)
544 (point)))
545 t)
546 (set-window-vscroll nil desired-vscroll t))
547 (set-window-vscroll nil (abs delta) t)))))))
548 536
549(defun pixel-scroll-precision-interpolate (delta) 537(defun pixel-scroll-precision-interpolate (delta)
550 "Interpolate a scroll of DELTA pixels. 538 "Interpolate a scroll of DELTA pixels.