emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master f9457b8 1/2: Fix pixel scroll for overlays and text in display pr


From: Po Lu
Subject: master f9457b8 1/2: Fix pixel scroll for overlays and text in display properties
Date: Sat, 27 Nov 2021 07:49:17 -0500 (EST)

branch: master
commit f9457b8b011aa7ba9df84d3d6ab1ba88a4220345
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>

    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.
---
 lisp/pixel-scroll.el | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/lisp/pixel-scroll.el b/lisp/pixel-scroll.el
index 92f66c8..4280dc2 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."



reply via email to

[Prev in Thread] Current Thread [Next in Thread]