if (left != null) { rightSize.y = Math.max(leftSize.y, banner.rightMinHeight == SWT.DEFAULT ? rightSize.y : banner.rightMinHeight); }
protected void layout(Composite composite, boolean flushCache) {	CBanner banner = (CBanner)composite;	Control left = banner.left;	Control right = banner.right;	Control bottom = banner.bottom;		Point size = banner.getSize();	boolean showCurve = left != null && right != null;	int width = size.x;	int height = size.y;		Point bottomSize = new Point(0, 0);	if (bottom != null) {		int trim = computeTrim(bottom);		int w = width - trim;		bottomSize = computeChildSize(bottom, w, SWT.DEFAULT, flushCache);		bottomSize.y = Math.min(bottomSize.y, height);		height -= bottomSize.y + CBanner.BORDER_TOP + CBanner.BORDER_BOTTOM + CBanner.BORDER_STRIPE;	}		if (showCurve) height -=  CBanner.BORDER_TOP + CBanner.BORDER_BOTTOM + 2*CBanner.BORDER_STRIPE;	height = Math.max(0, height);	Point rightSize = new Point(0,0);	if (right != null) {		int trimX = 0;		int trimY = 0;		if (right instanceof Scrollable) {			Rectangle rect = ((Scrollable) right).computeTrim (0, 0, 0, 0);			trimX = rect.width;			trimY = rect.height;		} else {			trimX = trimY = right.getBorderWidth () * 2;		}		int rightW = banner.rightWidth == SWT.DEFAULT ? SWT.DEFAULT : banner.rightWidth - trimX;		int rightH = banner.rightWidth == SWT.DEFAULT ? SWT.DEFAULT : height - trimY;		rightSize = computeChildSize(right, rightW, rightH, flushCache);		rightSize.x = Math.min(rightSize.x, width);		width -= rightSize.x + banner.curve_width - 2*banner.curve_indent;		width = Math.max(width, CBanner.MIN_LEFT); 	}	Point leftSize = new Point(0, 0);	if (left != null) {		int trim = computeTrim(left);		leftSize = computeChildSize(left, width - trim, SWT.DEFAULT, flushCache);	}	int x = 0;	int y = 0;	int oldStart = banner.curveStart;	Rectangle leftRect = null;	Rectangle rightRect = null;	Rectangle bottomRect = null;	if (bottom != null) {		bottomRect = new Rectangle(x, y+size.y-bottomSize.y, bottomSize.x, bottomSize.y);	}	if (showCurve) y += CBanner.BORDER_TOP + CBanner.BORDER_STRIPE;	if(left != null) {		leftRect = new Rectangle(x, y, leftSize.x, leftSize.y);		banner.curveStart = x + leftSize.x - banner.curve_indent;		x += leftSize.x + banner.curve_width - 2*banner.curve_indent;	}	if (right != null) {		rightRect = new Rectangle(x, y, rightSize.x, rightSize.y);	}	if (banner.curveStart < oldStart) {		banner.redraw(banner.curveStart - CBanner.CURVE_TAIL, 0, oldStart + banner.curve_width - banner.curveStart + CBanner.CURVE_TAIL + 5, size.y, false);	}	if (banner.curveStart > oldStart) {		banner.redraw(oldStart - CBanner.CURVE_TAIL, 0, banner.curveStart + banner.curve_width - oldStart + CBanner.CURVE_TAIL + 5, size.y, false);	}	/*	 * The paint events must be flushed in order to make the curve draw smoothly	 * while the user drags the divider.	 * On Windows, it is necessary to flush the paints before the children are 	 * resized because otherwise the children (particularly toolbars) will flash.	 */	banner.update();	banner.curveRect = new Rectangle(banner.curveStart, 0, banner.curve_width, size.y);	if (bottomRect != null) bottom.setBounds(bottomRect);	if (rightRect != null) right.setBounds(rightRect);	if (leftRect != null) left.setBounds(leftRect);}