xdisp.c (set_cursor_from_row): Fix cursor positioning when the
 string with `cursor' property comes from an `after-string' overlay.
This commit is contained in:
Eli Zaretskii 2010-04-01 15:37:28 +03:00
parent 357e2d8ec0
commit 814062c766
2 changed files with 20 additions and 5 deletions

View file

@ -1,3 +1,9 @@
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):

View file

@ -12823,12 +12823,19 @@ set_cursor_from_row (w, row, matrix, delta, delta_bytes, dy, dvpos)
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
@ -12861,9 +12868,11 @@ set_cursor_from_row (w, row, matrix, delta, delta_bytes, dy, dvpos)
}
}
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. */