Mercurial > emacs
changeset 111638:b823e94ac814
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.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Fri, 19 Nov 2010 18:34:22 +0200 |
parents | 63bab16df70b |
children | d94e03b64838 |
files | src/ChangeLog src/xdisp.c |
diffstat | 2 files changed, 11 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- 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 <eliz@gnu.org> + + * 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 <dann@ics.uci.edu> * alloc.c (refill_memory_reserve): Move declaration ...
--- 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;