summaryrefslogtreecommitdiff
path: root/lisp/pixel-scroll.el
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2021-11-27 19:23:31 +0800
committerPo Lu <luangruo@yahoo.com>2021-11-27 20:09:33 +0800
commitf9457b8b011aa7ba9df84d3d6ab1ba88a4220345 (patch)
tree8af35aabd65548e0faab62b90c7d7daa194ee21d /lisp/pixel-scroll.el
parent6072370db7244a13470252e5369c4c9de3e3a9ef (diff)
downloademacs-f9457b8b011aa7ba9df84d3d6ab1ba88a4220345.tar.gz
emacs-f9457b8b011aa7ba9df84d3d6ab1ba88a4220345.tar.bz2
emacs-f9457b8b011aa7ba9df84d3d6ab1ba88a4220345.zip
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.
Diffstat (limited to 'lisp/pixel-scroll.el')
-rw-r--r--lisp/pixel-scroll.el13
1 files changed, 10 insertions, 3 deletions
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."