# HG changeset patch # User Eli Zaretskii # Date 1290184462 -7200 # Node ID b823e94ac8147196a8e0cdf0f593b7aac880c026 # Parent 63bab16df70be1180b83a9aed7f184688a1ebde9 Fix bug #6687 with cursor positioning after before-string from overlays. xdisp.c (set_cursor_from_row): Display cursor after all the glyphs that come from an overlay. Don't overstep the last glyph when skipping glyphs from an overlay. diff -r 63bab16df70b -r b823e94ac814 src/ChangeLog --- a/src/ChangeLog Fri Nov 19 14:25:17 2010 +0100 +++ b/src/ChangeLog Fri Nov 19 18:34:22 2010 +0200 @@ -1,3 +1,9 @@ +2010-11-19 Eli Zaretskii + + * xdisp.c (set_cursor_from_row): Display cursor after all the + glyphs that come from an overlay. Don't overstep the last glyph + when skipping glyphs from an overlay. (Bug#6687) + 2010-11-18 Dan Nicolaescu * alloc.c (refill_memory_reserve): Move declaration ... diff -r 63bab16df70b -r b823e94ac814 src/xdisp.c --- a/src/xdisp.c Fri Nov 19 14:25:17 2010 +0100 +++ b/src/xdisp.c Fri Nov 19 18:34:22 2010 +0200 @@ -12941,7 +12941,8 @@ cursor on that character's glyph. */ EMACS_INT strpos = glyph->charpos; - cursor = glyph; + if (tem) + cursor = glyph; for (glyph += incr; (row->reversed_p ? glyph > stop : glyph < stop) && EQ (glyph->object, str); @@ -12958,7 +12959,7 @@ cursor = glyph; break; } - if (glyph->charpos < strpos) + if (tem && glyph->charpos < strpos) { strpos = glyph->charpos; cursor = glyph; @@ -12973,10 +12974,9 @@ } /* This string is not what we want; skip all of the glyphs that came from it. */ - do + while ((row->reversed_p ? glyph > stop : glyph < stop) + && EQ (glyph->object, str)) glyph += incr; - while ((row->reversed_p ? glyph > stop : glyph < stop) - && EQ (glyph->object, str)); } else glyph += incr;