Fix cursor display when several display strings follow each other.
authorEli Zaretskii <eliz@gnu.org>
Fri, 23 Nov 2012 08:27:05 +0000 (10:27 +0200)
committerEli Zaretskii <eliz@gnu.org>
Fri, 23 Nov 2012 08:27:05 +0000 (10:27 +0200)
 src/xdisp.c (set_cursor_from_row): Skip step 2 only if point is not
 between bpos_covered and bpos_max.  This fixes cursor display when
 several display strings follow each other.

src/ChangeLog
src/xdisp.c

index 7460e2c..88fbf7a 100644 (file)
@@ -1,5 +1,9 @@
 2012-11-23  Eli Zaretskii  <eliz@gnu.org>
 
+       * xdisp.c (set_cursor_from_row): Skip step 2 only if point is not
+       between bpos_covered and bpos_max.  This fixes cursor display when
+       several display strings follow each other.
+
        * .gdbinit (pgx): If the glyph's object is a string, display the
        pointer to string data, rather than the value of the string object
        itself (which barfs under CHECK_LISP_OBJECT_TYPE).
index 85fe9a0..4bb744a 100644 (file)
@@ -14232,7 +14232,7 @@ set_cursor_from_row (struct window *w, struct glyph_row *row,
      GLYPH_BEFORE and GLYPH_AFTER.  */
   if (!((row->reversed_p ? glyph > glyphs_end : glyph < glyphs_end)
        && BUFFERP (glyph->object) && glyph->charpos == pt_old)
-      && bpos_covered < pt_old)
+      && !(bpos_max < pt_old && pt_old <= bpos_covered))
     {
       /* An empty line has a single glyph whose OBJECT is zero and
         whose CHARPOS is the position of a newline on that line.