h += left != null ? leftSize.y : rightSize.y;
if (left != null) { h += right == null ? leftSize.y : Math.max(leftSize.y, rightMinHeight); } else { h += rightSize.y; }
public Point computeSize(int wHint, int hHint, boolean changed) {	checkWidget();	boolean showCurve = left != null && right != null;	int height = hHint;	int width = wHint;		Point bottomSize = new Point(0, 0);	if (bottom != null) {		Point trim = bottom.computeSize(width, SWT.DEFAULT);		trim.x = trim.x - width;		bottomSize = bottom.computeSize(width == SWT.DEFAULT ? SWT.DEFAULT : width - trim.x, SWT.DEFAULT);		if (height != SWT.DEFAULT) {			bottomSize.y = Math.min(bottomSize.y, height);			height -= bottomSize.y + BORDER_TOP + BORDER_STRIPE + BORDER_BOTTOM;		}	}	if (showCurve && height != SWT.DEFAULT ) height -= BORDER_TOP + BORDER_BOTTOM + 2*BORDER_STRIPE;	Point rightSize = new Point(0, 0);	if (right != null) {		Point trim = right.computeSize(rightWidth, height);		trim.x = trim.x - rightWidth;		rightSize = right.computeSize(rightWidth == SWT.DEFAULT ? SWT.DEFAULT : rightWidth - trim.x, rightWidth == SWT.DEFAULT ? SWT.DEFAULT : height);		if (width != SWT.DEFAULT) {			rightSize.x = Math.min(rightSize.x, width);			width -= rightSize.x + curve_width - 2* curve_indent;			width = Math.max(width, MIN_LEFT);		}	}	Point leftSize = new Point(0, 0);	if (left != null) {		Point trim = left.computeSize(width, SWT.DEFAULT);		trim.x = trim.x - width;		leftSize = left.computeSize(width == SWT.DEFAULT ? SWT.DEFAULT : width - trim.x, SWT.DEFAULT);	}	int w = 0, h = 0;	h += bottomSize.y;	if (bottom != null && (left != null || right != null)) h += BORDER_TOP + BORDER_BOTTOM + BORDER_STRIPE;	w += leftSize.x + rightSize.x;	if (showCurve) {		w += curve_width - 2*curve_indent;		h +=  BORDER_TOP + BORDER_BOTTOM + 2*BORDER_STRIPE;	}	h += left != null ? leftSize.y : rightSize.y;		if (wHint != SWT.DEFAULT) w = wHint;	if (hHint != SWT.DEFAULT) h = hHint;		return new Point(w, h);}