A better fix for bug #11464 with pos-visible-in-window-p and R2L text.
src/xdisp.c (move_it_to): Under MOVE_TO_Y, when restoring iterator state after an additional call to move_it_in_display_line_to, keep the values of it->max_ascent and it->max_descent found for the entire line. (pos_visible_p): Revert the comparison against bottom_y to what it was in 2012-05-13T18:22:35Z!eliz@gnu.org.
This commit is contained in:
parent
f467fdc6f9
commit
44e2736828
2 changed files with 22 additions and 2 deletions
|
@ -1,3 +1,13 @@
|
|||
2012-05-19 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* xdisp.c (move_it_to): Under MOVE_TO_Y, when restoring iterator
|
||||
state after an additional call to move_it_in_display_line_to, keep
|
||||
the values of it->max_ascent and it->max_descent found for the
|
||||
entire line.
|
||||
(pos_visible_p): Revert the comparison against bottom_y to what it
|
||||
was in revid eliz@gnu.org-20120513182235-4p6386j761ld0nwb.
|
||||
(Bug#11464)
|
||||
|
||||
2012-05-15 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* xdisp.c (pos_visible_p): Fix last change. (Bug#11464)
|
||||
|
|
14
src/xdisp.c
14
src/xdisp.c
|
@ -1313,7 +1313,7 @@ pos_visible_p (struct window *w, EMACS_INT charpos, int *x, int *y,
|
|||
visible_p = bottom_y > window_top_y;
|
||||
else if (top_y < it.last_visible_y)
|
||||
visible_p = 1;
|
||||
if (bottom_y <= it.last_visible_y
|
||||
if (bottom_y >= it.last_visible_y
|
||||
&& it.bidi_p && it.bidi_it.scan_dir == -1
|
||||
&& IT_CHARPOS (it) < charpos)
|
||||
{
|
||||
|
@ -8689,8 +8689,18 @@ move_it_to (struct it *it, EMACS_INT to_charpos, int to_x, int to_y, int to_vpos
|
|||
{
|
||||
/* If TO_Y is in this line and TO_X was reached
|
||||
above, we scanned too far. We have to restore
|
||||
IT's settings to the ones before skipping. */
|
||||
IT's settings to the ones before skipping. But
|
||||
keep the more accurate values of max_ascent and
|
||||
max_descent we've found while skipping the rest
|
||||
of the line, for the sake of callers, such as
|
||||
pos_visible_p, that need to know the line
|
||||
height. */
|
||||
int max_ascent = it->max_ascent;
|
||||
int max_descent = it->max_descent;
|
||||
|
||||
RESTORE_IT (it, &it_backup, backup_data);
|
||||
it->max_ascent = max_ascent;
|
||||
it->max_descent = max_descent;
|
||||
reached = 6;
|
||||
}
|
||||
else
|
||||
|
|
Loading…
Add table
Reference in a new issue