]> git.eshelyaron.com Git - emacs.git/commitdiff
Avoid infloop when scrolling under scroll-preserve-screen-position
authorEli Zaretskii <eliz@gnu.org>
Sat, 9 Sep 2017 14:20:47 +0000 (17:20 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sat, 9 Sep 2017 14:20:47 +0000 (17:20 +0300)
* src/window.c (window_scroll_pixel_based): If screen position is
to be preserved, make sure its recorded Y coordinate is outside
the scroll margin.  (Bug#28342)

src/window.c

index 857870591f3e385ef30d01521845fb13a6c1847a..18adb62538bdbc77ceae424d67cf5332120f10d1 100644 (file)
@@ -5335,6 +5335,11 @@ window_scroll_pixel_based (Lisp_Object window, int n, bool whole, bool noerror)
                break;
            }
          SET_PT_BOTH (IT_CHARPOS (it), IT_BYTEPOS (it));
+         /* Fix up the Y position to preserve, if it is inside the
+            scroll margin at the window top.  */
+         if (window_scroll_pixel_based_preserve_y >= 0
+             && window_scroll_pixel_based_preserve_y < this_scroll_margin)
+           window_scroll_pixel_based_preserve_y = this_scroll_margin;
        }
     }
   else if (n < 0)