| 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);
|
| +
|
| + BoxConstraints _getInnerConstraints(BoxConstraints constraints) {
|
| + double width = child.getMaxIntrinsicWidth(constraints);
|
| + assert(width == constraints.constrainWidth(width));
|
| + return new BoxConstraints(minWidth: width,
|
| + 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() {
|
|
|