]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix scrolling past tall images
authorEli Zaretskii <eliz@gnu.org>
Mon, 8 Feb 2021 16:04:00 +0000 (18:04 +0200)
committerEli Zaretskii <eliz@gnu.org>
Mon, 8 Feb 2021 16:04:00 +0000 (18:04 +0200)
* src/xdisp.c (try_window): Don't try checking the margins if the
window is vscrolled, as that could cause unnecessary recentering
when tall images are displayed.  (Bug#46320)

src/xdisp.c

index 1815f986781ef0eb58a07fb13d6613b1648fed0d..fb8eaf4b96702ba45632df358b66712bdeec9280 100644 (file)
@@ -19452,8 +19452,11 @@ try_window (Lisp_Object window, struct text_pos pos, int flags)
      'start_display' again.  */
   ptrdiff_t it_charpos = IT_CHARPOS (it);
 
-  /* Don't let the cursor end in the scroll margins.  */
+  /* Don't let the cursor end in the scroll margins.  However, when
+     the window is vscrolled, we leave it to vscroll to handle the
+     margins, see window_scroll_pixel_based.  */
   if ((flags & TRY_WINDOW_CHECK_MARGINS)
+      && w->vscroll == 0
       && !MINI_WINDOW_P (w))
     {
       int top_scroll_margin = window_scroll_margin (w, MARGIN_IN_PIXELS);
@@ -19462,7 +19465,7 @@ try_window (Lisp_Object window, struct text_pos pos, int flags)
        top_scroll_margin += CURRENT_HEADER_LINE_HEIGHT (w);
       start_display (&it, w, pos);
 
-      if ((w->cursor.y >= 0    /* not vscrolled */
+      if ((w->cursor.y >= 0
           && w->cursor.y < top_scroll_margin
           && CHARPOS (pos) > BEGV)
          /* rms: considering make_cursor_line_fully_visible_p here