summaryrefslogtreecommitdiff
path: root/lisp/pixel-scroll.el
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2021-12-10 11:25:10 +0800
committerPo Lu <luangruo@yahoo.com>2021-12-10 11:25:10 +0800
commit2e4740f04239ee441685b2f43d156efcf6359383 (patch)
treec5419f855c3334f735380cb14a895a518107bd89 /lisp/pixel-scroll.el
parente8d90a3fd402c0c67bf4b4b29ac26108ead8845d (diff)
downloademacs-2e4740f04239ee441685b2f43d156efcf6359383.tar.gz
Fix pixel scrolling upwards in Info buffers
* lisp/pixel-scroll.el (pixel-point-and-height-at-unseen-line): Don't blindly trust window start to be the beginning of a visual line.
Diffstat (limited to 'lisp/pixel-scroll.el')
-rw-r--r--lisp/pixel-scroll.el8
1 files changed, 5 insertions, 3 deletions
diff --git a/lisp/pixel-scroll.el b/lisp/pixel-scroll.el
index 813fbb0711b..432a5dc52cf 100644
--- a/lisp/pixel-scroll.el
+++ b/lisp/pixel-scroll.el
@@ -397,7 +397,10 @@ returns nil."
The returned value is a cons of the position of the first
character on the unseen line just above the scope of current
window, and the pixel height of that line."
- (let* ((pos0 (window-start))
+ (let* ((pos0 (save-excursion
+ (goto-char (window-start))
+ (beginning-of-visual-line)
+ (point)))
(vscroll0 (window-vscroll nil t))
(line-height nil)
(pos
@@ -407,8 +410,7 @@ window, and the pixel height of that line."
(point-min)
(vertical-motion -1)
(setq line-height
- (cdr (window-text-pixel-size nil (point)
- pos0)))
+ (cdr (window-text-pixel-size nil (point) pos0)))
(point)))))
;; restore initial position
(set-window-start nil pos0 t)