Mercurial > emacs
changeset 21310:d5dab6049412
(display_text_line): Handle overlay-arrow correctly.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sun, 29 Mar 1998 01:25:20 +0000 |
parents | dfa28803a4aa |
children | a5d6b18d63e5 |
files | src/xdisp.c |
diffstat | 1 files changed, 18 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/src/xdisp.c Sat Mar 28 21:56:57 1998 +0000 +++ b/src/xdisp.c Sun Mar 29 01:25:20 1998 +0000 @@ -4025,32 +4025,30 @@ if (len > width) len = width; -#ifdef HAVE_FACES - if (!NULL_INTERVAL_P (XSTRING (Voverlay_arrow_string)->intervals)) + + /* If the arrow string has text props, obey them when displaying. */ + for (i = 0, i_byte = 0; i < len; ) { - /* If the arrow string has text props, obey them when displaying. */ - for (i = 0, i_byte = 0; i < len; ) + int c; + Lisp_Object face, ilisp; + int newface; + int idx = i; + + if (STRING_MULTIBYTE (Voverlay_arrow_string)) + FETCH_STRING_CHAR_ADVANCE (c, Voverlay_arrow_string, i, i_byte); + else + c = XSTRING (Voverlay_arrow_string)->data[i++]; + + XSETFASTINT (ilisp, i); +#ifdef HAVE_FACES + if (FRAME_WINDOW_P (f)) { - int c; - Lisp_Object face, ilisp; - int newface; - - if (STRING_MULTIBYTE (Voverlay_arrow_string)) - FETCH_STRING_CHAR_ADVANCE (c, Voverlay_arrow_string, i, i_byte); - else - c = XSTRING (Voverlay_arrow_string)->data[i++]; - - XSETFASTINT (ilisp, i); face = Fget_text_property (ilisp, Qface, Voverlay_arrow_string); newface = compute_glyph_face_1 (f, face, 0); - leftmargin[i] = FAST_MAKE_GLYPH (c, newface); + c = FAST_MAKE_GLYPH (c, newface); } - } - else #endif /* HAVE_FACES */ - { - for (i = 0; i < len; i++) - leftmargin[i] = p[i]; + leftmargin[idx] = c; } /* Bug in SunOS 4.1.1 compiler requires this intermediate variable. */