comparison src/dispnew.c @ 107588:1104f4d707b1

Retrospective commit from 2009-09-12. Undo changes from 2009-09-11. Set row->end and row->start in xdisp.c:display_line. dispnew.c (direct_output_for_insert): Give up if we are reordering bidirectional text. dispextern.h (IT_STACK_SIZE): Enlarge to 5. xdisp.c (display_line): Set row->end and it->start for the next row to the next character in logical order. If we are reordering bidi text, push and pop the iterator before and after momentarily iterating in logical order.
author Eli Zaretskii <eliz@gnu.org>
date Thu, 31 Dec 2009 16:14:26 -0500
parents 0ff1b8888f6b
children a04b9ac55bc5
comparison
equal deleted inserted replaced
107587:0ff1b8888f6b 107588:1104f4d707b1
3610 || it.what != IT_CHARACTER) 3610 || it.what != IT_CHARACTER)
3611 return 0; 3611 return 0;
3612 3612
3613 delta += 1; 3613 delta += 1;
3614 delta_bytes += it.len; 3614 delta_bytes += it.len;
3615 set_iterator_to_next (&it, 1, 0); 3615 set_iterator_to_next (&it, 1);
3616 } 3616 }
3617 3617
3618 /* Give up if we hit the right edge of the window. We would have 3618 /* Give up if we hit the right edge of the window. We would have
3619 to insert truncation or continuation glyphs. */ 3619 to insert truncation or continuation glyphs. */
3620 added_width = it.current_x - (w->cursor.x + it.first_visible_x); 3620 added_width = it.current_x - (w->cursor.x + it.first_visible_x);
3628 while (get_next_display_element (&it2) 3628 while (get_next_display_element (&it2)
3629 && !ITERATOR_AT_END_OF_LINE_P (&it2)) 3629 && !ITERATOR_AT_END_OF_LINE_P (&it2))
3630 { 3630 {
3631 if (it2.c == '\t') 3631 if (it2.c == '\t')
3632 return 0; 3632 return 0;
3633 set_iterator_to_next (&it2, 1, 0); 3633 set_iterator_to_next (&it2, 1);
3634 } 3634 }
3635 3635
3636 /* Number of new glyphs produced. */ 3636 /* Number of new glyphs produced. */
3637 n = it.glyph_row->used[TEXT_AREA]; 3637 n = it.glyph_row->used[TEXT_AREA];
3638 3638