[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#29325: 26.0.90: Info scrolling stuck
From: |
Charles A. Roelli |
Subject: |
bug#29325: 26.0.90: Info scrolling stuck |
Date: |
Thu, 23 Nov 2017 21:08:45 +0100 |
> Date: Wed, 22 Nov 2017 17:38:26 +0200
> From: Eli Zaretskii <eliz@gnu.org>
>
> > > try_to_scroll looks like this:
> >
> > I suspect we shouldn't go there in this case.
>
> Actually, I think this code is not supposed to run in the case you
> describe, i.e. when the user invokes a scrolling command. So I think
> the root cause is elsewhere. Does the patch below fix the problem?
>
> diff --git a/src/window.c b/src/window.c
> index 7f47252..504dcd3 100644
> --- a/src/window.c
> +++ b/src/window.c
> @@ -5355,6 +5355,9 @@ window_scroll_pixel_based (Lisp_Object window, int n,
> bool whole, bool noerror)
> /* We moved the window start towards BEGV, so PT may be now
> in the scroll margin at the bottom. */
> move_it_to (&it, PT, -1,
> + /* We subtract WINDOW_HEADER_LINE_HEIGHT because
> + it.y is relative to the bottom of the header
> + line, see above. */
> (it.last_visible_y - WINDOW_HEADER_LINE_HEIGHT (w)
> - partial_line_height (&it) - this_scroll_margin - 1),
> -1,
> @@ -5392,11 +5395,14 @@ window_scroll_pixel_based (Lisp_Object window, int n,
> bool whole, bool noerror)
>
> /* See if point is on a partially visible line at the end. */
> if (it.what == IT_EOB)
> - partial_p = it.current_y + it.ascent + it.descent > it.last_visible_y;
> + partial_p =
> + it.current_y + it.ascent + it.descent
> + > it.last_visible_y - WINDOW_HEADER_LINE_HEIGHT (w);
> else
> {
> move_it_by_lines (&it, 1);
> - partial_p = it.current_y > it.last_visible_y;
> + partial_p =
> + it.current_y > it.last_visible_y - WINDOW_HEADER_LINE_HEIGHT (w);
> }
>
> if (charpos == PT && !partial_p
> @@ -5415,7 +5421,7 @@ window_scroll_pixel_based (Lisp_Object window, int n,
> bool whole, bool noerror)
> goal_y = this_scroll_margin;
> SET_TEXT_POS_FROM_MARKER (start, w->start);
> start_display (&it, w, start);
> - /* It would be wrong to subtract CURRENT_HEADER_LINE_HEIGHT
> + /* It would be wrong to subtract WINDOW_HEADER_LINE_HEIGHT
> here because we called start_display again and did not
> alter it.current_y this time. */
> move_it_to (&it, -1, window_scroll_pixel_based_preserve_x,
I can confirm that it does fix the issue on GNU/Linux. Thanks again
for your help here.
- bug#29325: 26.0.90: Info scrolling stuck, (continued)
- bug#29325: 26.0.90: Info scrolling stuck, Eli Zaretskii, 2017/11/17
- bug#29325: 26.0.90: Info scrolling stuck, Charles A. Roelli, 2017/11/19
- bug#29325: 26.0.90: Info scrolling stuck, Eli Zaretskii, 2017/11/19
- bug#29325: 26.0.90: Info scrolling stuck, Charles A. Roelli, 2017/11/20
- bug#29325: 26.0.90: Info scrolling stuck, Eli Zaretskii, 2017/11/20
- bug#29325: 26.0.90: Info scrolling stuck, Charles A. Roelli, 2017/11/21
- bug#29325: 26.0.90: Info scrolling stuck, Eli Zaretskii, 2017/11/21
- bug#29325: 26.0.90: Info scrolling stuck, Eli Zaretskii, 2017/11/21
- bug#29325: 26.0.90: Info scrolling stuck, Eli Zaretskii, 2017/11/22
- bug#29325: 26.0.90: Info scrolling stuck, Charles A. Roelli, 2017/11/22
- bug#29325: 26.0.90: Info scrolling stuck,
Charles A. Roelli <=
- bug#29325: 26.0.90: Info scrolling stuck, Eli Zaretskii, 2017/11/23
- bug#29325: 26.0.90: Info scrolling stuck, Charles A. Roelli, 2017/11/22
bug#29325: 26.0.90: Info scrolling stuck, Drew Adams, 2017/11/16