]> git.eshelyaron.com Git - emacs.git/commitdiff
Avoid unneeded recentering when header-line is used
authorEli Zaretskii <eliz@gnu.org>
Sat, 12 Sep 2020 08:06:54 +0000 (11:06 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sat, 12 Sep 2020 08:06:54 +0000 (11:06 +0300)
* src/xdisp.c (try_window): Account for header-line height only in
the scroll-margin at the window's top, but not at its bottom.
(Bug#42653)

src/xdisp.c

index 406b2d70d588d2363cd85e598a4ca4b2d2d9fc02..69e5a9e1cf154602350002ca8f045e3259b4993b 100644 (file)
@@ -19308,20 +19308,21 @@ try_window (Lisp_Object window, struct text_pos pos, int flags)
   if ((flags & TRY_WINDOW_CHECK_MARGINS)
       && !MINI_WINDOW_P (w))
     {
-      int this_scroll_margin = window_scroll_margin (w, MARGIN_IN_PIXELS);
+      int top_scroll_margin = window_scroll_margin (w, MARGIN_IN_PIXELS);
+      int bot_scroll_margin = top_scroll_margin;
       if (window_wants_header_line (w))
-       this_scroll_margin += CURRENT_HEADER_LINE_HEIGHT (w);
+       top_scroll_margin += CURRENT_HEADER_LINE_HEIGHT (w);
       start_display (&it, w, pos);
 
       if ((w->cursor.y >= 0    /* not vscrolled */
-          && w->cursor.y < this_scroll_margin
+          && w->cursor.y < top_scroll_margin
           && CHARPOS (pos) > BEGV)
          /* rms: considering make_cursor_line_fully_visible_p here
             seems to give wrong results.  We don't want to recenter
             when the last line is partly visible, we want to allow
             that case to be handled in the usual way.  */
          || w->cursor.y > (it.last_visible_y - partial_line_height (&it)
-                           - this_scroll_margin - 1))
+                           - bot_scroll_margin - 1))
        {
          w->cursor.vpos = -1;
          clear_glyph_matrix (w->desired_matrix);