Mercurial > emacs
changeset 110014:f576b550fb69
* nsterm.m (ns_draw_window_cursor): Draw BAR_CURSOR correct for R2L.
author | Jan D <jan.h.d@swipnet.se> |
---|---|
date | Sun, 29 Aug 2010 12:30:45 +0200 |
parents | 0fb70b0c7489 |
children | 280c8ae2476d |
files | src/ChangeLog src/nsterm.m |
diffstat | 2 files changed, 16 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ChangeLog Sat Aug 28 21:31:45 2010 -0400 +++ b/src/ChangeLog Sun Aug 29 12:30:45 2010 +0200 @@ -1,3 +1,7 @@ +2010-08-29 Jan Djärv <jan.h.d@swipnet.se> + + * nsterm.m (ns_draw_window_cursor): Draw BAR_CURSOR correct for R2L. + 2010-08-26 Kenichi Handa <handa@m17n.org> * xdisp.c (compute_stop_pos): Pay attention to bidi scan direction
--- a/src/nsterm.m Sat Aug 28 21:31:45 2010 -0400 +++ b/src/nsterm.m Sun Aug 29 12:30:45 2010 +0200 @@ -2251,6 +2251,11 @@ struct frame *f = WINDOW_XFRAME (w); struct glyph *phys_cursor_glyph; int overspill; + struct glyph *cursor_glyph; + + /* If cursor is out of bounds, don't draw garbage. This can happen + in mini-buffer windows when switching between echo area glyphs + and mini-buffer. */ NSTRACE (dumpcursor); //fprintf(stderr, "drawcursor (%d,%d) activep = %d\tonp = %d\tc_type = %d\twidth = %d\n",x,y, active_p,on_p,cursor_type,cursor_width); @@ -2328,6 +2333,13 @@ case BAR_CURSOR: s = r; s.size.width = min (cursor_width, 2); //FIXME(see above) + + /* If the character under cursor is R2L, draw the bar cursor + on the right of its glyph, rather than on the left. */ + cursor_glyph = get_phys_cursor_glyph (w); + if ((cursor_glyph->resolved_level & 1) != 0) + s.origin.x += cursor_glyph->pixel_width - s.size.width; + NSRectFill (s); break; }