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)
This commit is contained in:
parent
7d30ca7f66
commit
699e40caf6
1 changed files with 5 additions and 4 deletions
|
@ -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);
|
||||
|
|
Loading…
Add table
Reference in a new issue