From 85bd26158c7beb20210b8d4ef9986f3e5bfbadd2 Mon Sep 17 00:00:00 2001 From: David Reitter Date: Thu, 7 May 2009 13:46:56 +0000 Subject: [PATCH] ns_dumpglyphs_stretch, ns_dumpglyphs_image: respect mouse face background. --- src/nsterm.m | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/src/nsterm.m b/src/nsterm.m index aeeae4b20da..a76b7e70bc9 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -2808,6 +2808,7 @@ ns_dumpglyphs_image (struct glyph_string *s, NSRect r) int th; char raised_p; NSRect br; + struct face *face; NSTRACE (ns_dumpglyphs_image); @@ -2827,8 +2828,17 @@ ns_dumpglyphs_image (struct glyph_string *s, NSRect r) /* Draw BG: if we need larger area than image itself cleared, do that, otherwise, since we composite the image under NS (instead of mucking with its background color), we must clear just the image area. */ - [ns_lookup_indexed_color (NS_FACE_BACKGROUND - (FACE_FROM_ID (s->f, s->first_glyph->face_id)), s->f) set]; + if (s->hl == DRAW_MOUSE_FACE) + { + face = FACE_FROM_ID + (s->f, FRAME_NS_DISPLAY_INFO (s->f)->mouse_face_face_id); + if (!face) + face = FACE_FROM_ID (s->f, MOUSE_FACE_ID); + } + else + face = FACE_FROM_ID (s->f, s->first_glyph->face_id); + + [ns_lookup_indexed_color (NS_FACE_BACKGROUND (face), s->f) set]; if (bg_height > s->slice.height || s->img->hmargin || s->img->vmargin || s->img->mask || s->img->pixmap == 0 || s->width != s->background_width) @@ -2899,6 +2909,7 @@ ns_dumpglyphs_stretch (struct glyph_string *s) { NSRect r[2]; int n, i; + struct face *face; if (!s->background_filled_p) { @@ -2940,8 +2951,19 @@ ns_dumpglyphs_stretch (struct glyph_string *s) } ns_focus (s->f, r, n); - [ns_lookup_indexed_color (NS_FACE_BACKGROUND - (FACE_FROM_ID (s->f, s->first_glyph->face_id)), s->f) set]; + + if (s->hl == DRAW_MOUSE_FACE) + { + face = FACE_FROM_ID + (s->f, FRAME_NS_DISPLAY_INFO (s->f)->mouse_face_face_id); + if (!face) + face = FACE_FROM_ID (s->f, MOUSE_FACE_ID); + } + else + face = FACE_FROM_ID (s->f, s->first_glyph->face_id); + + [ns_lookup_indexed_color (NS_FACE_BACKGROUND (face), s->f) set]; + NSRectFill (r[0]); NSRectFill (r[1]); ns_unfocus (s->f); -- 2.39.5