| Index: sky/sdk/lib/rendering/box.dart
|
| diff --git a/sky/sdk/lib/rendering/box.dart b/sky/sdk/lib/rendering/box.dart
|
| index 96228fccf27f527cc00e14c881387ed197da8812..e973944128b7251372e3e7b5e5a890bb44cf3f27 100644
|
| --- a/sky/sdk/lib/rendering/box.dart
|
| +++ b/sky/sdk/lib/rendering/box.dart
|
| @@ -72,6 +72,14 @@ class BoxConstraints {
|
| minHeight = size.height,
|
| maxHeight = size.height;
|
|
|
| + BoxConstraints.tightFor({
|
| + double width,
|
| + double height
|
| + }): minWidth = width != null ? width : 0.0,
|
| + maxWidth = width != null ? width : double.INFINITY,
|
| + minHeight = height != null ? height : 0.0,
|
| + maxHeight = height != null ? height : double.INFINITY;
|
| +
|
| BoxConstraints.loose(Size size)
|
| : minWidth = 0.0,
|
| maxWidth = size.width,
|
| @@ -101,29 +109,30 @@ class BoxConstraints {
|
|
|
| BoxConstraints apply(BoxConstraints constraints) {
|
| return new BoxConstraints(
|
| - minWidth: math.max(minWidth, constraints.minWidth),
|
| - maxWidth: math.min(maxWidth, constraints.maxWidth),
|
| - minHeight: math.max(minHeight, constraints.minHeight),
|
| - maxHeight: math.min(maxHeight, constraints.maxHeight));
|
| + minWidth: clamp(min: constraints.minWidth, max: constraints.maxWidth, value: minWidth),
|
| + maxWidth: clamp(min: constraints.minWidth, max: constraints.maxWidth, value: maxWidth),
|
| + minHeight: clamp(min: constraints.minHeight, max: constraints.maxHeight, value: minHeight),
|
| + maxHeight: clamp(min: constraints.minHeight, max: constraints.maxHeight, value: maxHeight)
|
| + );
|
| }
|
|
|
| BoxConstraints applyWidth(double width) {
|
| - return new BoxConstraints(minWidth: math.max(minWidth, width),
|
| - maxWidth: math.min(maxWidth, width),
|
| + return new BoxConstraints(minWidth: math.max(math.min(maxWidth, width), minWidth),
|
| + maxWidth: math.max(math.min(maxWidth, width), minWidth),
|
| minHeight: minHeight,
|
| maxHeight: maxHeight);
|
| }
|
|
|
| - BoxConstraints applyMinWidth(double width) {
|
| - return new BoxConstraints(minWidth: math.max(minWidth, width),
|
| - maxWidth: maxWidth,
|
| + BoxConstraints applyMinWidth(double newMinWidth) {
|
| + return new BoxConstraints(minWidth: math.max(minWidth, newMinWidth),
|
| + maxWidth: math.max(maxWidth, newMinWidth),
|
| minHeight: minHeight,
|
| maxHeight: maxHeight);
|
| }
|
|
|
| - BoxConstraints applyMaxWidth(double width) {
|
| + BoxConstraints applyMaxWidth(double newMaxWidth) {
|
| return new BoxConstraints(minWidth: minWidth,
|
| - maxWidth: math.min(maxWidth, width),
|
| + maxWidth: math.min(maxWidth, newMaxWidth),
|
| minHeight: minHeight,
|
| maxHeight: maxHeight);
|
| }
|
| @@ -131,22 +140,22 @@ class BoxConstraints {
|
| BoxConstraints applyHeight(double height) {
|
| return new BoxConstraints(minWidth: minWidth,
|
| maxWidth: maxWidth,
|
| - minHeight: math.max(minHeight, height),
|
| - maxHeight: math.min(maxHeight, height));
|
| + minHeight: math.max(math.min(maxHeight, height), minHeight),
|
| + maxHeight: math.max(math.min(maxHeight, height), minHeight));
|
| }
|
|
|
| - BoxConstraints applyMinHeight(double height) {
|
| + BoxConstraints applyMinHeight(double newMinHeight) {
|
| return new BoxConstraints(minWidth: minWidth,
|
| maxWidth: maxWidth,
|
| - minHeight: math.max(minHeight, height),
|
| - maxHeight: maxHeight);
|
| + minHeight: math.max(minHeight, newMinHeight),
|
| + maxHeight: math.max(maxHeight, newMinHeight));
|
| }
|
|
|
| - BoxConstraints applyMaxHeight(double height) {
|
| + BoxConstraints applyMaxHeight(double newMaxHeight) {
|
| return new BoxConstraints(minWidth: minWidth,
|
| maxWidth: maxWidth,
|
| minHeight: minHeight,
|
| - maxHeight: math.min(maxHeight, height));
|
| + maxHeight: math.min(maxHeight, newMaxHeight));
|
| }
|
|
|
| final double minWidth;
|
| @@ -345,50 +354,6 @@ class RenderProxyBox extends RenderBox with RenderObjectWithChildMixin<RenderBox
|
|
|
| }
|
|
|
| -class RenderSizedBox extends RenderProxyBox {
|
| -
|
| - RenderSizedBox({
|
| - RenderBox child,
|
| - Size desiredSize: Size.infinite
|
| - }) : super(child), _desiredSize = desiredSize {
|
| - assert(desiredSize != null);
|
| - }
|
| -
|
| - Size _desiredSize;
|
| - Size get desiredSize => _desiredSize;
|
| - void set desiredSize (Size value) {
|
| - assert(value != null);
|
| - if (_desiredSize == value)
|
| - return;
|
| - _desiredSize = value;
|
| - markNeedsLayout();
|
| - }
|
| -
|
| - double getMinIntrinsicWidth(BoxConstraints constraints) {
|
| - return constraints.constrainWidth(_desiredSize.width);
|
| - }
|
| -
|
| - double getMaxIntrinsicWidth(BoxConstraints constraints) {
|
| - return constraints.constrainWidth(_desiredSize.width);
|
| - }
|
| -
|
| - double getMinIntrinsicHeight(BoxConstraints constraints) {
|
| - return constraints.constrainHeight(_desiredSize.height);
|
| - }
|
| -
|
| - double getMaxIntrinsicHeight(BoxConstraints constraints) {
|
| - return constraints.constrainHeight(_desiredSize.height);
|
| - }
|
| -
|
| - void performLayout() {
|
| - size = constraints.constrain(_desiredSize);
|
| - if (child != null)
|
| - child.layout(new BoxConstraints.tight(size));
|
| - }
|
| -
|
| - String debugDescribeSettings(String prefix) => '${super.debugDescribeSettings(prefix)}${prefix}desiredSize: ${desiredSize}\n';
|
| -}
|
| -
|
| class RenderConstrainedBox extends RenderProxyBox {
|
| RenderConstrainedBox({
|
| RenderBox child,
|
| @@ -409,34 +374,34 @@ class RenderConstrainedBox extends RenderProxyBox {
|
|
|
| double getMinIntrinsicWidth(BoxConstraints constraints) {
|
| if (child != null)
|
| - return child.getMinIntrinsicWidth(constraints.apply(_additionalConstraints));
|
| + return child.getMinIntrinsicWidth(_additionalConstraints.apply(constraints));
|
| return constraints.constrainWidth(0.0);
|
| }
|
|
|
| double getMaxIntrinsicWidth(BoxConstraints constraints) {
|
| if (child != null)
|
| - return child.getMaxIntrinsicWidth(constraints.apply(_additionalConstraints));
|
| + return child.getMaxIntrinsicWidth(_additionalConstraints.apply(constraints));
|
| return constraints.constrainWidth(0.0);
|
| }
|
|
|
| double getMinIntrinsicHeight(BoxConstraints constraints) {
|
| if (child != null)
|
| - return child.getMinIntrinsicHeight(constraints.apply(_additionalConstraints));
|
| + return child.getMinIntrinsicHeight(_additionalConstraints.apply(constraints));
|
| return constraints.constrainHeight(0.0);
|
| }
|
|
|
| double getMaxIntrinsicHeight(BoxConstraints constraints) {
|
| if (child != null)
|
| - return child.getMaxIntrinsicHeight(constraints.apply(_additionalConstraints));
|
| + return child.getMaxIntrinsicHeight(_additionalConstraints.apply(constraints));
|
| return constraints.constrainHeight(0.0);
|
| }
|
|
|
| void performLayout() {
|
| if (child != null) {
|
| - child.layout(constraints.apply(_additionalConstraints), parentUsesSize: true);
|
| + child.layout(_additionalConstraints.apply(constraints), parentUsesSize: true);
|
| size = child.size;
|
| } else {
|
| - performResize();
|
| + size = _additionalConstraints.apply(constraints).constrain(Size.zero);
|
| }
|
| }
|
|
|
|
|