* src/xterm.c (x_draw_image_relief): Add missing type check for Vtool_bar_button_margin.
authorChong Yidong <cyd@gnu.org>
Wed, 22 Feb 2012 06:03:30 +0000 (14:03 +0800)
committerChong Yidong <cyd@gnu.org>
Wed, 22 Feb 2012 06:03:30 +0000 (14:03 +0800)
Fixes: debbugs:10743

src/ChangeLog
src/xterm.c

index c5e8986..5a376c4 100644 (file)
@@ -1,3 +1,8 @@
+2012-02-22  Chong Yidong  <cyd@gnu.org>
+
+       * xterm.c (x_draw_image_relief): Add missing type check for
+       Vtool_bar_button_margin (Bug#10743).
+
 2012-02-21  Chong Yidong  <cyd@gnu.org>
 
        * fileio.c (Vfile_name_handler_alist): Doc fix.
index 0a54c98..6a57986 100644 (file)
@@ -2292,7 +2292,8 @@ x_draw_image_foreground (struct glyph_string *s)
 static void
 x_draw_image_relief (struct glyph_string *s)
 {
-  int x0, y0, x1, y1, thick, raised_p, extra;
+  int x0, y0, x1, y1, thick, raised_p;
+  int extra_x, extra_y;
   XRectangle r;
   int x = s->x;
   int y = s->ybase - image_ascent (s->img, s->face, &s->slice);
@@ -2323,13 +2324,24 @@ x_draw_image_relief (struct glyph_string *s)
       raised_p = s->img->relief > 0;
     }
 
-  extra = s->face->id == TOOL_BAR_FACE_ID
-    ? XINT (Vtool_bar_button_margin) : 0;
+  extra_x = extra_y = 0;
+  if (s->face->id == TOOL_BAR_FACE_ID)
+    {
+      if (CONSP (Vtool_bar_button_margin)
+         && INTEGERP (XCAR (Vtool_bar_button_margin))
+         && INTEGERP (XCDR (Vtool_bar_button_margin)))
+       {
+         extra_x = XCAR (Vtool_bar_button_margin);
+         extra_y = XCDR (Vtool_bar_button_margin);
+       }
+      else if (INTEGERP (Vtool_bar_button_margin))
+       extra_x = extra_y = XINT (Vtool_bar_button_margin);
+    }
 
-  x0 = x - thick - extra;
-  y0 = y - thick - extra;
-  x1 = x + s->slice.width + thick - 1 + extra;
-  y1 = y + s->slice.height + thick - 1 + extra;
+  x0 = x - thick - extra_x;
+  y0 = y - thick - extra_y;
+  x1 = x + s->slice.width + thick - 1 + extra_x;
+  y1 = y + s->slice.height + thick - 1 + extra_y;
 
   x_setup_relief_colors (s);
   get_glyph_string_clip_rect (s, &r);