]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix bug #17115 with displaying on w32 images that have 'box' face.
authorYAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Thu, 27 Mar 2014 16:25:17 +0000 (18:25 +0200)
committerEli Zaretskii <eliz@gnu.org>
Thu, 27 Mar 2014 16:25:17 +0000 (18:25 +0200)
 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.

src/ChangeLog
src/w32term.c

index 025ea45b23be0a5baf59a732a3d2dc64fc5da855..0c24451c459063406f22a94957d4c4c93c4e026e 100644 (file)
@@ -1,3 +1,9 @@
+2014-03-27  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * 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  <eggert@penguin.cs.ucla.edu>
 
        More backward-compatible fix to char-equal core dump (Bug#17011).
index 4c426aca921fcd1451d3020dd809c8506b17e492..2fe73a3eb48ab92d20f97ea96318c4f8bec464c4 100644 (file)
@@ -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;
     }