Chromium Code Reviews| Index: sky/sdk/lib/framework/rendering/box.dart |
| diff --git a/sky/sdk/lib/framework/rendering/box.dart b/sky/sdk/lib/framework/rendering/box.dart |
| index 42d0c3f18a6c035724e08657c78657a74ef30a9f..089075d2a09d185a7b661c63098ff796d4e686bf 100644 |
| --- a/sky/sdk/lib/framework/rendering/box.dart |
| +++ b/sky/sdk/lib/framework/rendering/box.dart |
| @@ -329,6 +329,40 @@ class RenderConstrainedBox extends RenderProxyBox { |
| String debugDescribeSettings(String prefix) => '${super.debugDescribeSettings(prefix)}${prefix}additionalConstraints: ${additionalConstraints}\n'; |
| } |
| +class RenderShrinkWrapWidth extends RenderProxyBox { |
| + RenderShrinkWrapWidth({ RenderBox child }) : super(child); |
|
Hixie
2015/06/08 23:00:36
if you're requiring child to be non-null, assert i
abarth-chromium
2015/06/09 00:40:29
Fixed to handle null.
|
| + |
| + BoxConstraints _getInnerConstraints(BoxConstraints constraints) { |
| + double width = child.getMaxIntrinsicWidth(constraints); |
| + assert(width == constraints.constrainWidth(width)); |
| + return new BoxConstraints(minWidth: width, |
|
Hixie
2015/06/08 23:00:35
don't we have a BoxConstraints constructor for thi
abarth-chromium
2015/06/09 00:40:29
Added applyWidth
|
| + maxWidth: width, |
| + minHeight: constraints.minHeight, |
| + maxHeight: constraints.maxHeight); |
| + } |
| + |
| + double getMinIntrinsicWidth(BoxConstraints constraints) { |
| + return child.getMaxIntrinsicWidth(constraints); |
| + } |
| + |
| + double getMaxIntrinsicWidth(BoxConstraints constraints) { |
| + return child.getMaxIntrinsicWidth(constraints); |
| + } |
| + |
| + double getMinIntrinsicHeight(BoxConstraints constraints) { |
| + return child.getMinIntrinsicHeight(_getInnerConstraints(constraints)); |
| + } |
| + |
| + double getMaxIntrinsicHeight(BoxConstraints constraints) { |
| + return child.getMaxIntrinsicHeight(_getInnerConstraints(constraints)); |
| + } |
| + |
| + void performLayout() { |
| + child.layout(_getInnerConstraints(constraints)); |
| + size = child.size; |
| + } |
| +} |
| + |
| class RenderClip extends RenderProxyBox { |
| RenderClip({ RenderBox child }) : super(child); |
| @@ -361,27 +395,31 @@ class RenderPadding extends RenderBox with RenderObjectWithChildMixin<RenderBox> |
| } |
| double getMinIntrinsicWidth(BoxConstraints constraints) { |
| + double totalPadding = padding.left + padding.right; |
| if (child != null) |
| - return child.getMinIntrinsicWidth(constraints.deflate(padding)); |
| - return constraints.constrainWidth(padding.left + padding.right); |
| + return child.getMinIntrinsicWidth(constraints.deflate(padding)) + totalPadding; |
| + return constraints.constrainWidth(totalPadding); |
| } |
| double getMaxIntrinsicWidth(BoxConstraints constraints) { |
| + double totalPadding = padding.left + padding.right; |
| if (child != null) |
| - return child.getMaxIntrinsicWidth(constraints.deflate(padding)); |
| - return constraints.constrainWidth(padding.left + padding.right); |
| + return child.getMaxIntrinsicWidth(constraints.deflate(padding)) + totalPadding; |
| + return constraints.constrainWidth(totalPadding); |
| } |
| double getMinIntrinsicHeight(BoxConstraints constraints) { |
| + double totalPadding = padding.top + padding.bottom; |
| if (child != null) |
| - return child.getMinIntrinsicHeight(constraints.deflate(padding)); |
| - return constraints.constrainHeight(padding.top + padding.bottom); |
| + return child.getMinIntrinsicHeight(constraints.deflate(padding)) + totalPadding; |
| + return constraints.constrainHeight(totalPadding); |
| } |
| double getMaxIntrinsicHeight(BoxConstraints constraints) { |
| + double totalPadding = padding.top + padding.bottom; |
| if (child != null) |
| - return child.getMaxIntrinsicHeight(constraints.deflate(padding)); |
| - return constraints.constrainHeight(padding.top + padding.bottom); |
| + return child.getMaxIntrinsicHeight(constraints.deflate(padding)) + totalPadding; |
| + return constraints.constrainHeight(totalPadding); |
| } |
| void performLayout() { |