summaryrefslogtreecommitdiff
path: root/src/xdisp.c
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2020-09-12 11:06:54 +0300
committerEli Zaretskii <eliz@gnu.org>2020-09-12 11:06:54 +0300
commit699e40caf634cea11350c59fc64ce5693d378cb4 (patch)
tree017678a0effa38322c161e751913ad1b314b7e8c /src/xdisp.c
parent7d30ca7f66b546a390b12719245f174aa4765c68 (diff)
downloademacs-699e40caf634cea11350c59fc64ce5693d378cb4.tar.gz
Avoid unneeded recentering when header-line is used
* 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)
Diffstat (limited to 'src/xdisp.c')
-rw-r--r--src/xdisp.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/xdisp.c b/src/xdisp.c
index 406b2d70d58..69e5a9e1cf1 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -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);