Mercurial > emacs
changeset 109683:232cf2881573
Fix overlay arrow display (bug #6699).
xdisp.c (display_line): Move the handling of overlay arrow after
the call to find_row_edges.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Sun, 08 Aug 2010 19:23:11 +0300 |
parents | bc0b9af387a7 |
children | dbc0119ac80e |
files | src/ChangeLog src/xdisp.c |
diffstat | 2 files changed, 27 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ChangeLog Sat Aug 07 22:04:57 2010 -0500 +++ b/src/ChangeLog Sun Aug 08 19:23:11 2010 +0300 @@ -1,3 +1,8 @@ +2010-08-08 Eli Zaretskii <eliz@gnu.org> + + * xdisp.c (display_line): Move the handling of overlay arrow after + the call to find_row_edges. (Bug#6699) + 2010-08-07 Chong Yidong <cyd@stupidchicken.com> * keyboard.c (command_loop_1):
--- a/src/xdisp.c Sat Aug 07 22:04:57 2010 -0500 +++ b/src/xdisp.c Sun Aug 08 19:23:11 2010 +0300 @@ -11352,6 +11352,8 @@ && (MATRIX_ROW_START_CHARPOS (row) == marker_position (val))) { if (FRAME_WINDOW_P (it->f) + /* FIXME: if ROW->reversed_p is set, this should test + the right fringe, not the left one. */ && WINDOW_LEFT_FRINGE_WIDTH (it->w) > 0) { #ifdef HAVE_WINDOW_SYSTEM @@ -17798,6 +17800,26 @@ row->truncated_on_left_p = 1; } + /* Remember the position at which this line ends. + + BIDI Note: any code that needs MATRIX_ROW_START/END_CHARPOS + cannot be before the call to find_row_edges below, since that is + where these positions are determined. */ + row->end = it->current; + if (!it->bidi_p) + { + row->minpos = row->start.pos; + row->maxpos = row->end.pos; + } + else + { + /* ROW->minpos and ROW->maxpos must be the smallest and + `1 + the largest' buffer positions in ROW. But if ROW was + bidi-reordered, these two positions can be anywhere in the + row, so we must determine them now. */ + find_row_edges (it, row, min_pos, min_bpos, max_pos, max_bpos); + } + /* If the start of this line is the overlay arrow-position, then mark this glyph row as the one containing the overlay arrow. This is clearly a mess with variable size fonts. It would be @@ -17843,22 +17865,6 @@ /* Compute pixel dimensions of this line. */ compute_line_metrics (it); - /* Remember the position at which this line ends. */ - row->end = it->current; - if (!it->bidi_p) - { - row->minpos = row->start.pos; - row->maxpos = row->end.pos; - } - else - { - /* ROW->minpos and ROW->maxpos must be the smallest and - `1 + the largest' buffer positions in ROW. But if ROW was - bidi-reordered, these two positions can be anywhere in the - row, so we must determine them now. */ - find_row_edges (it, row, min_pos, min_bpos, max_pos, max_bpos); - } - /* Record whether this row ends inside an ellipsis. */ row->ends_in_ellipsis_p = (it->method == GET_FROM_DISPLAY_VECTOR