From: Eli Zaretskii Date: Sun, 31 Aug 2014 15:46:47 +0000 (+0300) Subject: Fix cursor drawing in hscrolled R2L screen lines. X-Git-Tag: emacs-25.0.90~2635^2~679^2~382 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=4457cc825bdbe30f704c80edbae25d12e7e5bab2;p=emacs.git Fix cursor drawing in hscrolled R2L screen lines. src/xdisp.c (get_glyph_string_clip_rects): Don't let the width of a clipping rectangle become negative (i.e. large positive, since it's an unsigned data type). This can happen in R2L hscrolled glyph rows, and caused us to draw the cursor glyph on the fringe. For the details, see http://lists.gnu.org/archive/html/emacs-devel/2014-08/msg00543.html. --- diff --git a/src/ChangeLog b/src/ChangeLog index 8f2e01f8cf9..26ee524acda 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,12 @@ +2014-08-31 Eli Zaretskii + + * xdisp.c (get_glyph_string_clip_rects): Don't let the width of a + clipping rectangle become negative (i.e. large positive, since + it's an unsigned data type). This can happen in R2L hscrolled + glyph rows, and caused us to draw the cursor glyph on the fringe. + For the details, see + http://lists.gnu.org/archive/html/emacs-devel/2014-08/msg00543.html. + 2014-08-31 Ken Brown * gmalloc.c: Don't include . Declare system malloc and diff --git a/src/xdisp.c b/src/xdisp.c index 2b12dd8f557..4383c497d7a 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -2174,7 +2174,10 @@ get_glyph_string_clip_rects (struct glyph_string *s, NativeRectangle *rects, int if (s->x > r.x) { - r.width -= s->x - r.x; + if (r.width >= s->x - r.x) + r.width -= s->x - r.x; + else /* R2L hscrolled row with cursor outside text area */ + r.width = 0; r.x = s->x; } r.width = min (r.width, glyph->pixel_width);