# HG changeset patch # User Gerd Moellmann # Date 969051674 0 # Node ID 8b3846ae64fe91334809bea760e676679fb313b5 # Parent fe990a5df9d33d8c9a1095eac5dc8aa610cec4b3 (build_desired_tool_bar_string): For a toolbar item in disabled state, don't apply an image transformation algorithm if the user specified an image for the disabled state. Use `:algorthm disabled' for creating a disabled item's image if the user hasn't specified an image. diff -r fe990a5df9d3 -r 8b3846ae64fe src/xdisp.c --- a/src/xdisp.c Fri Sep 15 21:00:32 2000 +0000 +++ b/src/xdisp.c Fri Sep 15 21:01:14 2000 +0000 @@ -6846,7 +6846,7 @@ int enabled_p = !NILP (PROP (TOOL_BAR_ITEM_ENABLED_P)); int selected_p = !NILP (PROP (TOOL_BAR_ITEM_SELECTED_P)); - int margin, relief; + int margin, relief, idx; extern Lisp_Object QCrelief, QCmargin, QCalgorithm, Qimage; extern Lisp_Object Qlaplace; @@ -6855,8 +6855,6 @@ image = PROP (TOOL_BAR_ITEM_IMAGES); if (VECTORP (image)) { - enum tool_bar_item_image idx; - if (enabled_p) idx = (selected_p ? TOOL_BAR_IMAGE_ENABLED_SELECTED @@ -6866,9 +6864,11 @@ ? TOOL_BAR_IMAGE_DISABLED_SELECTED : TOOL_BAR_IMAGE_DISABLED_DESELECTED); - xassert (XVECTOR (image)->size >= idx); - image = XVECTOR (image)->contents[idx]; - } + xassert (ASIZE (image) >= idx); + image = AREF (image, idx); + } + else + idx = -1; /* Ignore invalid image specifications. */ if (!valid_image_p (image)) @@ -6907,10 +6907,11 @@ if (margin) plist = Fplist_put (plist, QCmargin, make_number (margin)); - /* If button is not enabled, make the image appear disabled by + /* If button is not enabled, and we don't have special images + for the disabled state, make the image appear disabled by applying an appropriate algorithm to it. */ - if (!enabled_p) - plist = Fplist_put (plist, QCalgorithm, Qlaplace); + if (!enabled_p && idx < 0) + plist = Fplist_put (plist, QCalgorithm, Qdisabled); /* Put a `display' text property on the string for the image to display. Put a `menu-item' property on the string that gives