summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog5
-rw-r--r--src/xterm.c26
2 files changed, 24 insertions, 7 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index c5e898684a8..5a376c4ad5b 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -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.
diff --git a/src/xterm.c b/src/xterm.c
index 0a54c987387..6a5798661fa 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -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);