Commit 814062c7 authored by Eli Zaretskii's avatar Eli Zaretskii

Fix bug #5816.

 xdisp.c (set_cursor_from_row): Fix cursor positioning when the
 string with `cursor' property comes from an `after-string' overlay.
parent 357e2d8e
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> 2010-04-01 Glenn Morris <rgm@gnu.org>
* Makefile.in (LIBTIFF, LIBJPEG, LIBPNG, LIBGIF, LIBXPM, XFT_LIBS): * Makefile.in (LIBTIFF, LIBJPEG, LIBPNG, LIBGIF, LIBXPM, XFT_LIBS):
......
...@@ -12823,12 +12823,19 @@ set_cursor_from_row (w, row, matrix, delta, delta_bytes, dy, dvpos) ...@@ -12823,12 +12823,19 @@ set_cursor_from_row (w, row, matrix, delta, delta_bytes, dy, dvpos)
str = glyph->object; str = glyph->object;
tem = string_buffer_position_lim (w, str, pos, pos_after, 0); 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 /* If the string from which this glyph came is
found in the buffer at point, then we've found in the buffer at point, then we've
found the glyph we've been looking for. */ found the glyph we've been looking for. If
if (tem == pt_old) 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 /* The glyphs from this string could have
been reordered. Find the one with the been reordered. Find the one with the
...@@ -12861,9 +12868,11 @@ set_cursor_from_row (w, row, matrix, delta, delta_bytes, dy, dvpos) ...@@ -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 /* This string is not what we want; skip all of the
glyphs that came from it. */ glyphs that came from it. */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment