From 67643d4b8618268d7fe3f838ae84cbfad06a797f Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Sun, 20 Apr 2008 22:46:14 +0000 Subject: [PATCH] (pos_visible_p): Check if iterator stops on a display string. --- src/xdisp.c | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/src/xdisp.c b/src/xdisp.c index 1f8b35a1d3a..50c115b42ca 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -1330,26 +1330,29 @@ pos_visible_p (w, charpos, x, y, rtop, rbot, rowh, vpos) visible_p = 1; if (visible_p) { - Lisp_Object window, prop; + if (it.method == GET_FROM_BUFFER) + { + Lisp_Object window, prop; - XSETWINDOW (window, w); - prop = Fget_char_property (make_number (it.position.charpos), - Qinvisible, window); + XSETWINDOW (window, w); + prop = Fget_char_property (make_number (it.position.charpos), + Qinvisible, window); - /* If charpos coincides with invisible text covered with an - ellipsis, use the first glyph of the ellipsis to compute - the pixel positions. */ - if (TEXT_PROP_MEANS_INVISIBLE (prop) == 2) - { - struct glyph_row *row = it.glyph_row; - struct glyph *glyph = row->glyphs[TEXT_AREA]; - struct glyph *end = glyph + row->used[TEXT_AREA]; - int x = row->x; + /* If charpos coincides with invisible text covered with an + ellipsis, use the first glyph of the ellipsis to compute + the pixel positions. */ + if (TEXT_PROP_MEANS_INVISIBLE (prop) == 2) + { + struct glyph_row *row = it.glyph_row; + struct glyph *glyph = row->glyphs[TEXT_AREA]; + struct glyph *end = glyph + row->used[TEXT_AREA]; + int x = row->x; - for (; glyph < end && glyph->charpos < charpos; glyph++) - x += glyph->pixel_width; + for (; glyph < end && glyph->charpos < charpos; glyph++) + x += glyph->pixel_width; - top_x = x; + top_x = x; + } } *x = top_x; -- 2.39.5