# HG changeset patch # User David Reitter # Date 1241704016 0 # Node ID 578b120df701bde41bed124c257ceb843c9017e2 # Parent c8128f7d464bca089da1eec6c5d013d2a0f75ef6 ns_dumpglyphs_stretch, ns_dumpglyphs_image: respect mouse face background. diff -r c8128f7d464b -r 578b120df701 src/nsterm.m --- a/src/nsterm.m Thu May 07 13:46:31 2009 +0000 +++ b/src/nsterm.m Thu May 07 13:46:56 2009 +0000 @@ -2808,6 +2808,7 @@ int th; char raised_p; NSRect br; + struct face *face; NSTRACE (ns_dumpglyphs_image); @@ -2827,8 +2828,17 @@ /* 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 @@ { NSRect r[2]; int n, i; + struct face *face; if (!s->background_filled_p) { @@ -2940,8 +2951,19 @@ } 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);