Avoid recentering when lines differ in their height.
xdisp.c (try_scrolling): When scroll-conservatively is set to most-positive-fixnum, be extra accurate when scrolling window start, to avoid missing the cursor line.
This commit is contained in:
parent
8adb4c33da
commit
70c4cfbb3b
2 changed files with 26 additions and 1 deletions
|
@ -1,3 +1,9 @@
|
|||
2010-06-20 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* xdisp.c (try_scrolling): When scroll-conservatively is set to
|
||||
most-positive-fixnum, be extra accurate when scrolling window
|
||||
start, to avoid missing the cursor line.
|
||||
|
||||
2010-06-19 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* xdisp.c (try_scrolling): Compute the limit for searching point
|
||||
|
|
21
src/xdisp.c
21
src/xdisp.c
|
@ -13486,7 +13486,26 @@ try_scrolling (window, just_this_one_p, scroll_conservatively,
|
|||
return SCROLLING_FAILED;
|
||||
|
||||
start_display (&it, w, startp);
|
||||
move_it_vertically (&it, amount_to_scroll);
|
||||
if (scroll_max < INT_MAX)
|
||||
move_it_vertically (&it, amount_to_scroll);
|
||||
else
|
||||
{
|
||||
/* Extra precision for users who set scroll-conservatively
|
||||
to most-positive-fixnum: make sure the amount we scroll
|
||||
the window start is never less than amount_to_scroll,
|
||||
which was computed as distance from window bottom to
|
||||
point. This matters when lines at window top and lines
|
||||
below window bottom have different height. */
|
||||
struct it it1 = it;
|
||||
/* We use a temporary it1 because line_bottom_y can modify
|
||||
its argument, if it moves one line down; see there. */
|
||||
int start_y = line_bottom_y (&it1);
|
||||
|
||||
do {
|
||||
move_it_by_lines (&it, 1, 1);
|
||||
it1 = it;
|
||||
} while (line_bottom_y (&it1) - start_y < amount_to_scroll);
|
||||
}
|
||||
|
||||
/* If STARTP is unchanged, move it down another screen line. */
|
||||
if (CHARPOS (it.current.pos) == CHARPOS (startp))
|
||||
|
|
Loading…
Add table
Reference in a new issue