diff options
| author | Richard M. Stallman | 1998-03-29 01:25:20 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 1998-03-29 01:25:20 +0000 |
| commit | 212e4f8756c6c7020eac8cf6c5caf9bd276eb19c (patch) | |
| tree | ca6e299463d3de4af344e0847e68ff912b1e72c2 /src | |
| parent | c79e04d88b1aaab5e27366a8090b4c0c954bc753 (diff) | |
| download | emacs-212e4f8756c6c7020eac8cf6c5caf9bd276eb19c.tar.gz emacs-212e4f8756c6c7020eac8cf6c5caf9bd276eb19c.zip | |
(display_text_line): Handle overlay-arrow correctly.
Diffstat (limited to 'src')
| -rw-r--r-- | src/xdisp.c | 36 |
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. */ |