if (currentImage == null) {
if (currentImage == null && image != null) {
int processPaint (int callData) {	if ((style & SWT.SEPARATOR) != 0) return 0;	int xDisplay = OS.XtDisplay (handle);	if (xDisplay == 0) return 0;	int xWindow = OS.XtWindow (handle);	if (xWindow == 0) return 0;	int [] argList = {		OS.XmNcolormap, 0,		OS.XmNwidth, 0,		OS.XmNheight, 0,	};	OS.XtGetValues (handle, argList, argList.length / 2);	int width = argList [3], height = argList [5];		Image currentImage = image;	boolean enabled = getEnabled();	if ((parent.style & SWT.FLAT) != 0) {		Display display = getDisplay ();		boolean hasCursor = hasCursor ();				/* Set the shadow thickness */		int thickness = 0;		if (set || (hasCursor && enabled)) {			thickness = Math.min (2, display.buttonShadowThickness);		}		argList = new int [] {OS.XmNshadowThickness, thickness};		OS.XtSetValues (handle, argList, argList.length / 2);				/* Determine if hot image should be used */		if (enabled && hasCursor && hotImage != null) {			currentImage = hotImage;		}	}	ToolDrawable wrapper = new ToolDrawable ();	wrapper.device = getDisplay ();	wrapper.display = xDisplay;	wrapper.drawable = xWindow;	wrapper.fontList = parent.fontList;	wrapper.colormap = argList [1];		GC gc = new GC (wrapper);		XmAnyCallbackStruct cb = new XmAnyCallbackStruct ();	OS.memmove (cb, callData, XmAnyCallbackStruct.sizeof);	if (cb.event != 0) {		XExposeEvent xEvent = new XExposeEvent ();		OS.memmove (xEvent, cb.event, XExposeEvent.sizeof);		Rectangle rect = new Rectangle (xEvent.x, xEvent.y, xEvent.width, xEvent.height);		gc.setClipping (rect);	}		if (!enabled) {		Display display = getDisplay ();		currentImage = disabledImage;		if (currentImage == null) {			currentImage = new Image (display, image, SWT.IMAGE_DISABLE);		}		Color disabledColor = display.getSystemColor (SWT.COLOR_WIDGET_NORMAL_SHADOW);		gc.setForeground (disabledColor);	} else {		gc.setForeground (parent.getForeground ());	}	gc.setBackground (parent.getBackground ());		int textX = 0, textY = 0, textWidth = 0, textHeight = 0;	if (text.length () != 0) {		int flags = SWT.DRAW_DELIMITER | SWT.DRAW_TAB | SWT.DRAW_MNEMONIC;		Point textExtent = gc.textExtent (text, flags);		textWidth = textExtent.x;		textHeight = textExtent.y;	}		int imageX = 0, imageY = 0, imageWidth = 0, imageHeight = 0;	if (currentImage != null) {		Rectangle imageBounds = currentImage.getBounds ();		imageWidth = imageBounds.width;		imageHeight = imageBounds.height;	}		int spacing = 0;	if (textWidth != 0 && imageWidth != 0) spacing = 2;	if ((parent.style & SWT.RIGHT) != 0) {		imageX = (width - imageWidth - textWidth - spacing) / 2;		imageY = (height - imageHeight) / 2;		textX = spacing + imageX + imageWidth;		textY = (height - textHeight) / 2;	} else {				imageX = (width - imageWidth) / 2;		imageY = (height - imageHeight - textHeight - spacing) / 2;		textX = (width - textWidth) / 2;		textY = spacing + imageY + imageHeight;	}		if ((style & SWT.DROP_DOWN) != 0) {		textX -= 6;  imageX -=6;	}	if (textWidth > 0) {		int flags = SWT.DRAW_DELIMITER | SWT.DRAW_TAB | SWT.DRAW_MNEMONIC;		gc.drawText(text, textX, textY, flags);	}	if (imageWidth > 0) gc.drawImage(currentImage, imageX, imageY);	if ((style & SWT.DROP_DOWN) != 0) {		int startX = width - 12, startY = (height - 2) / 2;		int [] arrow = {startX, startY, startX + 3, startY + 3, startX + 6, startY};		gc.setBackground (parent.getForeground ());		gc.fillPolygon (arrow);		gc.drawPolygon (arrow);	}	gc.dispose ();		if (!enabled && disabledImage == null) {		if (currentImage != null) currentImage.dispose ();	}	return 0;}