(Fvertical_motion): Restore hscroll before moving to goal column.

This commit is contained in:
Chong Yidong 2008-07-12 03:19:38 +00:00
parent e433031a1a
commit 2f4ec7ce4f

View file

@ -2055,12 +2055,11 @@ whether or not it is currently displayed in some window. */)
}
else
{
int it_start;
int oselective;
int it_overshoot_expected;
int it_start, oselective, it_overshoot_expected, first_x;
SET_TEXT_POS (pt, PT, PT_BYTE);
start_display (&it, w, pt);
first_x = it.first_visible_x;
/* Scan from the start of the line containing PT. If we don't
do this, we start moving with IT->current_x == 0, while PT is
@ -2118,11 +2117,21 @@ whether or not it is currently displayed in some window. */)
if (XINT (lines) >= 0 || IT_CHARPOS (it) > 0)
move_it_by_lines (&it, XINT (lines), 0);
/* Move to the goal column, if one was specified. */
if (!NILP (lcols))
move_it_in_display_line
(&it, ZV,
(int)(cols * FRAME_COLUMN_WIDTH (XFRAME (w->frame)) + 0.5),
MOVE_TO_X);
{
/* If the window was originally hscrolled, move forward by
the hscrolled amount first. */
if (first_x > 0)
{
move_it_in_display_line (&it, ZV, first_x, MOVE_TO_X);
it.current_x = 0;
}
move_it_in_display_line
(&it, ZV,
(int)(cols * FRAME_COLUMN_WIDTH (XFRAME (w->frame)) + 0.5),
MOVE_TO_X);
}
SET_PT_BOTH (IT_CHARPOS (it), IT_BYTEPOS (it));
}