+2010-04-01 Eli Zaretskii <eliz@gnu.org>
+
+ * xdisp.c (set_cursor_from_row): Fix cursor positioning when the
+ string with `cursor' property comes from an `after-string'
+ overlay. (Bug#5816)
+
2010-04-01 Glenn Morris <rgm@gnu.org>
* Makefile.in (LIBTIFF, LIBJPEG, LIBPNG, LIBGIF, LIBXPM, XFT_LIBS):
str = glyph->object;
tem = string_buffer_position_lim (w, str, pos, pos_after, 0);
- if (pos <= tem)
+ if (tem == 0 /* from overlay */
+ || pos <= tem)
{
/* If the string from which this glyph came is
found in the buffer at point, then we've
- found the glyph we've been looking for. */
- if (tem == pt_old)
+ found the glyph we've been looking for. If
+ it comes from an overlay (tem == 0), and it
+ has the `cursor' property on one of its
+ glyphs, record that glyph as a candidate for
+ displaying the cursor. (As in the
+ unidirectional version, we will display the
+ cursor on the last candidate we find.) */
+ if (tem == 0 || tem == pt_old)
{
/* The glyphs from this string could have
been reordered. Find the one with the
}
}
- goto compute_x;
+ if (tem == pt_old)
+ goto compute_x;
}
- pos = tem + 1; /* don't find previous instances */
+ if (tem)
+ pos = tem + 1; /* don't find previous instances */
}
/* This string is not what we want; skip all of the
glyphs that came from it. */