int border = getBorderWidth (); width += border * 2; height += border * 2;
public Point computeSize (int wHint, int hHint, boolean changed) {	checkWidget ();	int width = 0, height = 0;	RECT rect = new RECT ();	int newFont, oldFont = 0;	int hDC = OS.GetDC (handle);	newFont = OS.SendMessage (handle, OS.WM_GETFONT, 0, 0);	if (newFont != 0) oldFont = OS.SelectObject (hDC, newFont);	int length = OS.GetWindowTextLength (handle);	TCHAR buffer1 = new TCHAR (getCodePage (), length + 1);	OS.GetWindowText (handle, buffer1, length + 1);	int flags = OS.DT_CALCRECT | OS.DT_SINGLELINE;	OS.DrawText (hDC, buffer1, length, rect, flags);	if (newFont != 0) OS.SelectObject (hDC, oldFont);	OS.ReleaseDC (handle, hDC);	Point size;	if (layout != null) {		size = layout.computeSize (this, wHint, hHint, changed);	} else {		size = minimumSize ();	}	width = size.x;  height = size.y;	if (width == 0) width = DEFAULT_WIDTH;	if (height == 0) height = DEFAULT_HEIGHT;	if (wHint != SWT.DEFAULT) width = wHint;	if (hHint != SWT.DEFAULT) height = hHint;	Rectangle trim = computeTrim (0, 0, width, height);	width = Math.max (trim.width, rect.right - rect.left + 6);	height = trim.height;	return new Point (width, height);}