# HG changeset patch # User Kim F. Storm # Date 1094590276 0 # Node ID e5690f1ff0a547e3a4d8ae278c46f6e637d1ea6e # Parent 587d59561e32310d77eebb28495fd7940e5cff7e (set_cursor_from_row): Fix last change. Only use 'cursor' property from text property or overlay strings at point. diff -r 587d59561e32 -r e5690f1ff0a5 src/xdisp.c --- a/src/xdisp.c Tue Sep 07 18:21:45 2004 +0000 +++ b/src/xdisp.c Tue Sep 07 20:51:16 2004 +0000 @@ -10659,6 +10659,7 @@ int string_before_pos; int x = row->x; int cursor_x = x; + int cursor_from_overlay_pos = 0; int pt_old = PT - delta; /* Skip over glyphs not having an object at the start of the row. @@ -10684,6 +10685,12 @@ string_start = NULL; x += glyph->pixel_width; ++glyph; + if (cursor_from_overlay_pos + && last_pos > cursor_from_overlay_pos) + { + cursor_from_overlay_pos = 0; + cursor = 0; + } } else { @@ -10693,10 +10700,16 @@ /* Skip all glyphs from string. */ do { + int pos; if ((cursor == NULL || glyph > cursor) && !NILP (Fget_char_property (make_number ((glyph)->charpos), - Qcursor, (glyph)->object))) - { + Qcursor, (glyph)->object)) + && (pos = string_buffer_position (w, glyph->object, + string_before_pos), + (pos == 0 /* From overlay */ + || pos == pt_old))) + { + cursor_from_overlay_pos = pos == 0 ? last_pos : 0; cursor = glyph; cursor_x = x; }