From: YAMAMOTO Mitsuharu Date: Thu, 27 Mar 2014 16:25:17 +0000 (+0200) Subject: Fix bug #17115 with displaying on w32 images that have 'box' face. X-Git-Tag: emacs-24.3.90~79 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=0c4e715c98919593413a76a0ab1458b0d10ea287;p=emacs.git Fix bug #17115 with displaying on w32 images that have 'box' face. src/w32term.c (x_draw_image_glyph_string): Fix computation of height and width of image background when it is displayed with a 'box' face. --- diff --git a/src/ChangeLog b/src/ChangeLog index 025ea45b23b..0c24451c459 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2014-03-27 YAMAMOTO Mitsuharu + + * w32term.c (x_draw_image_glyph_string): Fix computation of height + and width of image background when it is displayed with a 'box' + face. (Bug#17115) + 2014-03-26 Paul Eggert More backward-compatible fix to char-equal core dump (Bug#17011). diff --git a/src/w32term.c b/src/w32term.c index 4c426aca921..2fe73a3eb48 100644 --- a/src/w32term.c +++ b/src/w32term.c @@ -2085,10 +2085,14 @@ x_draw_image_glyph_string (struct glyph_string *s) int x, y; int box_line_hwidth = eabs (s->face->box_line_width); int box_line_vwidth = max (s->face->box_line_width, 0); - int height; + int height, width; HBITMAP pixmap = 0; - height = s->height - 2 * box_line_vwidth; + height = s->height; + if (s->slice.y == 0) + height -= box_line_vwidth; + if (s->slice.y + s->slice.height >= s->img->height) + height -= box_line_vwidth; /* Fill background with face under the image. Do it only if row is taller than image or if image has a clip mask to reduce @@ -2101,10 +2105,14 @@ x_draw_image_glyph_string (struct glyph_string *s) || s->img->pixmap == 0 || s->width != s->background_width) { + width = s->background_width; x = s->x; if (s->first_glyph->left_box_line_p && s->slice.x == 0) - x += box_line_hwidth; + { + x += box_line_hwidth; + width -= box_line_hwidth; + } y = s->y; if (s->slice.y == 0) @@ -2150,7 +2158,7 @@ x_draw_image_glyph_string (struct glyph_string *s) } else #endif - x_draw_glyph_string_bg_rect (s, x, y, s->background_width, height); + x_draw_glyph_string_bg_rect (s, x, y, width, height); s->background_filled_p = 1; }