src/xdisp.c (set_cursor_from_row): If the display string appears in
the buffer at position that is closer to point than the position
after the display string, display the cursor on the first glyph of
the display string. Fixes cursor display when a 'display' text
property immediately follows invisible text.
+2012-04-09 Eli Zaretskii <eliz@gnu.org>
+
+ * xdisp.c (set_cursor_from_row): If the display string appears in
+ the buffer at position that is closer to point than the position
+ after the display string, display the cursor on the first glyph of
+ the display string. Fixes cursor display when a 'display' text
+ property immediately follows invisible text. (Bug#11094)
+
2012-04-09 Paul Eggert <eggert@cs.ucla.edu>
composite.c: use 'double' consistently
2012-04-09 Paul Eggert <eggert@cs.ucla.edu>
composite.c: use 'double' consistently
|| pos <= tem)
{
/* If the string from which this glyph came is
|| 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
- it comes from an overlay (tem == 0), and it
- has the `cursor' property on one of its
+ found in the buffer at point, or at position
+ that is closer to point than pos_after, then
+ we've 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.) */
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)
+ if (tem == 0
+ || tem == pt_old
+ || (tem - pt_old > 0 && tem < pos_after))
{
/* The glyphs from this string could have
been reordered. Find the one with the
{
/* The glyphs from this string could have
been reordered. Find the one with the
+ if (tem == pt_old
+ || (tem - pt_old > 0 && tem < pos_after))
goto compute_x;
}
if (tem)
goto compute_x;
}
if (tem)