From: Po Lu Date: Sat, 27 Nov 2021 11:23:31 +0000 (+0800) Subject: Fix pixel scroll for overlays and text in display properties X-Git-Tag: emacs-29.0.90~3649^2~24 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=f9457b8b011aa7ba9df84d3d6ab1ba88a4220345;p=emacs.git Fix pixel scroll for overlays and text in display properties * lisp/pixel-scroll.el (pixel-scroll-precision-scroll-down): Just set vscroll if we're scrolling through an overlay or something to that effect. --- diff --git a/lisp/pixel-scroll.el b/lisp/pixel-scroll.el index 92f66c89cef..4280dc2587b 100644 --- a/lisp/pixel-scroll.el +++ b/lisp/pixel-scroll.el @@ -408,11 +408,18 @@ the height of the current window." (let* ((desired-pos (posn-at-x-y 0 (+ delta (window-tab-line-height) (window-header-line-height)))) + (object (posn-object desired-pos)) (desired-start (posn-point desired-pos)) (desired-vscroll (cdr (posn-object-x-y desired-pos)))) - (unless (eq (window-start) desired-start) - (set-window-start nil desired-start t)) - (set-window-vscroll nil desired-vscroll t)))) + (if (or (consp object) (stringp object)) + ;; We are either on an overlay or a string, so set vscroll + ;; directly. + (set-window-vscroll nil (+ (window-vscroll nil t) + delta) + t) + (unless (eq (window-start) desired-start) + (set-window-start nil desired-start t)) + (set-window-vscroll nil desired-vscroll t))))) (defun pixel-scroll-precision-scroll-up (delta) "Scroll the current window up by DELTA pixels."