aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRichard M. Stallman1998-03-29 01:25:20 +0000
committerRichard M. Stallman1998-03-29 01:25:20 +0000
commit212e4f8756c6c7020eac8cf6c5caf9bd276eb19c (patch)
treeca6e299463d3de4af344e0847e68ff912b1e72c2 /src
parentc79e04d88b1aaab5e27366a8090b4c0c954bc753 (diff)
downloademacs-212e4f8756c6c7020eac8cf6c5caf9bd276eb19c.tar.gz
emacs-212e4f8756c6c7020eac8cf6c5caf9bd276eb19c.zip
(display_text_line): Handle overlay-arrow correctly.
Diffstat (limited to 'src')
-rw-r--r--src/xdisp.c36
1 files changed, 17 insertions, 19 deletions
diff --git a/src/xdisp.c b/src/xdisp.c
index 9c881cb8b95..95024e79c4a 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -4025,32 +4025,30 @@ display_text_line (w, start, start_byte, vpos, hpos, taboffset, ovstr_done)
4025 4025
4026 if (len > width) 4026 if (len > width)
4027 len = width; 4027 len = width;
4028#ifdef HAVE_FACES 4028
4029 if (!NULL_INTERVAL_P (XSTRING (Voverlay_arrow_string)->intervals)) 4029 /* If the arrow string has text props, obey them when displaying. */
4030 for (i = 0, i_byte = 0; i < len; )
4030 { 4031 {
4031 /* If the arrow string has text props, obey them when displaying. */ 4032 int c;
4032 for (i = 0, i_byte = 0; i < len; ) 4033 Lisp_Object face, ilisp;
4033 { 4034 int newface;
4034 int c; 4035 int idx = i;
4035 Lisp_Object face, ilisp;
4036 int newface;
4037 4036
4038 if (STRING_MULTIBYTE (Voverlay_arrow_string)) 4037 if (STRING_MULTIBYTE (Voverlay_arrow_string))
4039 FETCH_STRING_CHAR_ADVANCE (c, Voverlay_arrow_string, i, i_byte); 4038 FETCH_STRING_CHAR_ADVANCE (c, Voverlay_arrow_string, i, i_byte);
4040 else 4039 else
4041 c = XSTRING (Voverlay_arrow_string)->data[i++]; 4040 c = XSTRING (Voverlay_arrow_string)->data[i++];
4042 4041
4043 XSETFASTINT (ilisp, i); 4042 XSETFASTINT (ilisp, i);
4043#ifdef HAVE_FACES
4044 if (FRAME_WINDOW_P (f))
4045 {
4044 face = Fget_text_property (ilisp, Qface, Voverlay_arrow_string); 4046 face = Fget_text_property (ilisp, Qface, Voverlay_arrow_string);
4045 newface = compute_glyph_face_1 (f, face, 0); 4047 newface = compute_glyph_face_1 (f, face, 0);
4046 leftmargin[i] = FAST_MAKE_GLYPH (c, newface); 4048 c = FAST_MAKE_GLYPH (c, newface);
4047 } 4049 }
4048 }
4049 else
4050#endif /* HAVE_FACES */ 4050#endif /* HAVE_FACES */
4051 { 4051 leftmargin[idx] = c;
4052 for (i = 0; i < len; i++)
4053 leftmargin[i] = p[i];
4054 } 4052 }
4055 4053
4056 /* Bug in SunOS 4.1.1 compiler requires this intermediate variable. */ 4054 /* Bug in SunOS 4.1.1 compiler requires this intermediate variable. */