From: David Reitter Date: Thu, 7 May 2009 13:46:56 +0000 (+0000) Subject: ns_dumpglyphs_stretch, ns_dumpglyphs_image: respect mouse face background. X-Git-Tag: emacs-pretest-23.0.94~92 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=85bd26158c7beb20210b8d4ef9986f3e5bfbadd2;p=emacs.git ns_dumpglyphs_stretch, ns_dumpglyphs_image: respect mouse face background. --- 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);