summaryrefslogtreecommitdiff
path: root/src/xdisp.c
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>2007-11-03 03:48:12 +0000
committerRichard M. Stallman <rms@gnu.org>2007-11-03 03:48:12 +0000
commit17d6c69d11cf3b63a39d893894d7f360615fedc2 (patch)
tree3c0d42005589e1a22f1814cd48a01f4b2f29e12b /src/xdisp.c
parent490943fe146878558e7e123b0fe7ded4b8df6384 (diff)
downloademacs-17d6c69d11cf3b63a39d893894d7f360615fedc2.tar.gz
(handle_face_prop): Use face_at_buffer_position_no_overlays
to get the base face for an overlay string.
Diffstat (limited to 'src/xdisp.c')
-rw-r--r--src/xdisp.c31
1 files changed, 23 insertions, 8 deletions
diff --git a/src/xdisp.c b/src/xdisp.c
index ef8c6c836aa..4e3c0445e2e 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -3367,16 +3367,31 @@ handle_face_prop (it)
int base_face_id, bufpos;
if (it->current.overlay_string_index >= 0)
- bufpos = IT_CHARPOS (*it);
+ {
+ bufpos = IT_CHARPOS (*it);
+ /* For an overlay face, the base face depends
+ only on text properties and ignores overlays. */
+ base_face_id
+ = face_at_buffer_position_no_overlays (it->w,
+ IT_CHARPOS (*it),
+ it->region_beg_charpos,
+ it->region_end_charpos,
+ &next_stop,
+ (IT_CHARPOS (*it)
+ + TEXT_PROP_DISTANCE_LIMIT),
+ 0);
+ }
else
- bufpos = 0;
+ {
+ bufpos = 0;
- /* For strings from a buffer, i.e. overlay strings or strings
- from a `display' property, use the face at IT's current
- buffer position as the base face to merge with, so that
- overlay strings appear in the same face as surrounding
- text, unless they specify their own faces. */
- base_face_id = underlying_face_id (it);
+ /* For strings from a `display' property, use the face at
+ IT's current buffer position as the base face to merge
+ with, so that overlay strings appear in the same face as
+ surrounding text, unless they specify their own
+ faces. */
+ base_face_id = underlying_face_id (it);
+ }
new_face_id = face_at_string_position (it->w,
it->string,