From 35a415071e4b38acd205aea572bb084707237589 Mon Sep 17 00:00:00 2001 From: Gerd Moellmann Date: Fri, 12 Jan 2001 15:12:10 +0000 Subject: [PATCH] (Vtool_bar_button_margin): Replaces tool_bar_button_margin. (build_desired_tool_bar_string): Handle Vtool_bar_button_margin being a pair of margins. (syms_of_xdisp): Change DEFVAR_INT of tool-bar-button-margins to DEFVAR_LISP. Extend doc. --- src/xdisp.c | 50 ++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 10 deletions(-) diff --git a/src/xdisp.c b/src/xdisp.c index ebb80afd11a..4a3abe5bc13 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -239,7 +239,7 @@ int auto_raise_tool_bar_buttons_p; /* Margin around tool bar buttons in pixels. */ -int tool_bar_button_margin; +Lisp_Object Vtool_bar_button_margin; /* Thickness of shadow to draw around tool bar buttons. */ @@ -7186,7 +7186,7 @@ build_desired_tool_bar_string (f) int enabled_p = !NILP (PROP (TOOL_BAR_ITEM_ENABLED_P)); int selected_p = !NILP (PROP (TOOL_BAR_ITEM_SELECTED_P)); - int margin, relief, idx, end; + int hmargin, vmargin, relief, idx, end; extern Lisp_Object QCrelief, QCmargin, QCalgorithm, Qimage; extern Lisp_Object Qlaplace; @@ -7219,7 +7219,24 @@ build_desired_tool_bar_string (f) /* Compute margin and relief to draw. */ relief = tool_bar_button_relief > 0 ? tool_bar_button_relief : 3; - margin = relief + max (0, tool_bar_button_margin); + hmargin = vmargin = relief; + + if (INTEGERP (Vtool_bar_button_margin) + && XINT (Vtool_bar_button_margin) > 0) + { + hmargin += XFASTINT (Vtool_bar_button_margin); + vmargin += XFASTINT (Vtool_bar_button_margin); + } + else if (CONSP (Vtool_bar_button_margin)) + { + if (INTEGERP (XCAR (Vtool_bar_button_margin)) + && XINT (XCAR (Vtool_bar_button_margin)) > 0) + hmargin += XFASTINT (XCAR (Vtool_bar_button_margin)); + + if (INTEGERP (XCDR (Vtool_bar_button_margin)) + && XINT (XCDR (Vtool_bar_button_margin)) > 0) + vmargin += XFASTINT (XCDR (Vtool_bar_button_margin)); + } if (auto_raise_tool_bar_buttons_p) { @@ -7228,7 +7245,8 @@ build_desired_tool_bar_string (f) if (selected_p) { plist = Fplist_put (plist, QCrelief, make_number (-relief)); - margin -= relief; + hmargin -= relief; + vmargin -= relief; } } else @@ -7240,12 +7258,20 @@ build_desired_tool_bar_string (f) (selected_p ? make_number (-relief) : make_number (relief))); - margin -= relief; + hmargin -= relief; + vmargin -= relief; } /* Put a margin around the image. */ - if (margin) - plist = Fplist_put (plist, QCmargin, make_number (margin)); + if (hmargin || vmargin) + { + if (hmargin == vmargin) + plist = Fplist_put (plist, QCmargin, make_number (hmargin)); + else + plist = Fplist_put (plist, QCmargin, + Fcons (make_number (hmargin), + make_number (vmargin))); + } /* If button is not enabled, and we don't have special images for the disabled state, make the image appear disabled by @@ -14088,9 +14114,13 @@ otherwise."); "*Non-nil means raise tool-bar buttons when the mouse moves over them."); auto_raise_tool_bar_buttons_p = 1; - DEFVAR_INT ("tool-bar-button-margin", &tool_bar_button_margin, - "*Margin around tool-bar buttons in pixels."); - tool_bar_button_margin = 1; + DEFVAR_LISP ("tool-bar-button-margin", &Vtool_bar_button_margin, + "*Margin around tool-bar buttons in pixels.\n\ +If an integer, use that for both horizontal and vertical margins.\n\ +Otherwise, value should be a pair of integers `(HORZ : VERT)' with\n\ +HORZ specifying the horizontal margin, and VERT specifying the\n\ +vertical margin."); + Vtool_bar_button_margin = make_number (1); DEFVAR_INT ("tool-bar-button-relief", &tool_bar_button_relief, "Relief thickness of tool-bar buttons."); -- 2.39.5