diff options
| author | Po Lu | 2021-12-09 17:57:25 +0800 |
|---|---|---|
| committer | Po Lu | 2021-12-09 17:57:25 +0800 |
| commit | 948a8936ba26c7823f716bb1041ee3f309bb9ece (patch) | |
| tree | cde792d86084cf44705058848d78823d22148473 | |
| parent | 07d95325e4bb955c4b660f632c77c4693374282f (diff) | |
| download | emacs-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.el | 20 |
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. |