Implement GUI display of R2L lines, fix TTY display of R2L lines.
authorEli Zaretskii <eliz@gnu.org>
Tue, 20 Apr 2010 13:31:28 +0000 (16:31 +0300)
committerEli Zaretskii <eliz@gnu.org>
Tue, 20 Apr 2010 13:31:28 +0000 (16:31 +0300)
commit283ccc1841a43a9426b7fa4c397fc9593ae4022b
tree8365f6715bb866e6c07410f600ae2a43900f77d4
parent3bb49aaf02507540cefed269bd410d318f8c81b4
parent93d68d0c2b085f65a867024fb8e7e28a629a003a
Implement GUI display of R2L lines, fix TTY display of R2L lines.

 xdisp.c [HAVE_WINDOW_SYSTEM]: Add prototype for
 append_stretch_glyph.
 (set_cursor_from_row) <cursor_x>: Remove unused variable.  Fix
 off-by-one error in computing x at end of text in the row.
 (append_stretch_glyph): In reversed row, prepend the glyph rather
 than append it.  Set resolved_level and bidi_type of the glyph.
 (extend_face_to_end_of_line): If the row is reversed, prepend a
 stretch glyph whose width is such that the rightmost glyph will be
 drawn at the right margin of the window.  Fix off-by-one error on
 TTY frames in testing whether a line needs face extension.  Fix
 face extension at ZV.  If this is the last glyph row, use
 DEFAULT_FACE_ID, to avoid painting the rest of the window with the
 region face.
 (set_cursor_from_row, display_line): Use
 MATRIX_ROW_CONTINUATION_LINE_P instead of testing value of
 row->continuation_lines_width.
 (next_element_from_buffer): Don't call bidi_paragraph_init if we
 are at ZV.  Fixes a crash when reseated to ZV by
 try_window_reusing_current_matrix.
 (display_and_set_cursor, erase_phys_cursor): Handle negative HPOS,
 which happens with R2L glyph rows.  Fixes a crash when inserting a
 character at end of an R2L line.
 (set_cursor_from_row): Don't be fooled by truncated rows: don't
 treat them as having zero-width characters.  Improve comments.
 Don't reverse pos_before and pos_after for reversed glyph rows.
 Set cursor.x to negative value when the cursor might be on the
 left fringe.
 (IT_OVERFLOW_NEWLINE_INTO_FRINGE): For R2L lines, consider the
 left fringe, not the right one.
 (notice_overwritten_cursor, draw_phys_cursor_glyph)
 (erase_phys_cursor): For reversed cursor_row, support cursor on
 the left fringe.
 fringe.c (update_window_fringes): For R2L rows, swap the bitmaps
 of continuation indicators on the fringes.
 (draw_fringe_bitmap): For reversed glyph rows, allow cursor on the
 left fringe.
 w32term.c (w32_draw_window_cursor): For reversed glyph rows,
 draw cursor on the left fringe.
 xterm.c (x_draw_window_cursor): For reversed glyph rows, draw
 cursor on the left fringe.
 dispnew.c (update_text_area): Handle reversed desired rows when
 the cursor is on the left fringe.
 (set_window_cursor_after_update): Limit cursor's hpos by -1 from
 below, not by 0, for when the cursor is on the left fringe.

 xdisp.c (unproduce_glyphs): New function.
 (display_line): Use it when produced glyphs are discarded from R2L
 glyph rows.
 (append_composite_glyph): In R2L rows, prepend the glyph rather
 than appending it.
  term.c (append_composite_glyph): In R2L rows, prepend the glyph
 rather than append it.  Set up the resolved_level and bidi_type
 attributes of the appended glyph.
 (produce_special_glyphs): Mirror the backslash continuation
 character in R2L lines.
src/ChangeLog
src/term.c
src/xdisp.c