]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix cursor drawing in hscrolled R2L screen lines.
authorEli Zaretskii <eliz@gnu.org>
Sun, 31 Aug 2014 15:46:47 +0000 (18:46 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sun, 31 Aug 2014 15:46:47 +0000 (18:46 +0300)
 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.

src/ChangeLog
src/xdisp.c

index 8f2e01f8cf9a6b08d077caeb7af511b47c9f4674..26ee524acdacfac9301f6c0ff8155000b3017414 100644 (file)
@@ -1,3 +1,12 @@
+2014-08-31  Eli Zaretskii  <eliz@gnu.org>
+
+       * 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  <kbrown@cornell.edu>
 
        * gmalloc.c: Don't include <stdlib.h>.  Declare system malloc and
index 2b12dd8f55789f0d33fb388d433dc426182898a2..4383c497d7a9e513a8ca84769afb2f0ebc9deffc 100644 (file)
@@ -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);