+2011-07-07 Eli Zaretskii <eliz@gnu.org>
+
+ * xdisp.c (find_row_edges): If ROW->start.pos gives position
+ smaller than min_pos, use it as ROW->minpos. (Bug#7616)
+
2011-07-05 Eli Zaretskii <eliz@gnu.org>
* dispnew.c (buffer_posn_from_coords): Save and restore the bidi
2011-07-02 Eli Zaretskii <eliz@gnu.org>
* xdisp.c (reseat_1): Call bidi_init_it to resync the bidi
- iterator with IT's position.
+ iterator with IT's position. (Bug#7616)
(handle_stop, back_to_previous_visible_line_start, reseat_1):
Reset the from_disp_prop_p flag.
lines' rows is implemented for bidi-reordered rows. */
/* ROW->minpos is the value of min_pos, the minimal buffer position
- we have in ROW. */
- if (min_pos <= ZV)
+ we have in ROW, or ROW->start.pos if that is smaller. */
+ if (min_pos <= ZV && min_pos < row->start.pos.charpos)
SET_TEXT_POS (row->minpos, min_pos, min_bpos);
else
- /* We didn't find _any_ valid buffer positions in any of the
- glyphs, so we must trust the iterator's computed positions. */
+ /* We didn't find buffer positions smaller than ROW->start, or
+ didn't find _any_ valid buffer positions in any of the glyphs,
+ so we must trust the iterator's computed positions. */
row->minpos = row->start.pos;
if (max_pos <= 0)
{