Mercurial > emacs
changeset 103176:578b120df701
ns_dumpglyphs_stretch, ns_dumpglyphs_image: respect mouse face background.
author | David Reitter <david.reitter@gmail.com> |
---|---|
date | Thu, 07 May 2009 13:46:56 +0000 |
parents | c8128f7d464b |
children | a9330f5194ee |
files | src/nsterm.m |
diffstat | 1 files changed, 26 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- 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);