From 2904bac1a6d2eeaa2b6b7c97655ca736d2bc3928 Mon Sep 17 00:00:00 2001 From: Hixie Date: Fri, 10 Jul 2015 14:35:09 -0700 Subject: [PATCH] Support for FlexAlignItems.stretch. R=jackson@google.com Review URL: https://codereview.chromium.org/1229353002 . --- sdk/lib/rendering/flex.dart | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/sdk/lib/rendering/flex.dart b/sdk/lib/rendering/flex.dart index 0a6573c7391..43726d3c2d0 100644 --- a/sdk/lib/rendering/flex.dart +++ b/sdk/lib/rendering/flex.dart @@ -33,6 +33,7 @@ enum FlexAlignItems { start, end, center, + stretch, } typedef double _ChildSizingFunction(RenderBox child, BoxConstraints constraints); @@ -288,8 +289,23 @@ class RenderFlex extends RenderBox with ContainerRenderObjectMixin 0) { totalFlex += child.parentData.flex; } else { - BoxConstraints innerConstraints = new BoxConstraints(maxHeight: constraints.maxHeight, - maxWidth: constraints.maxWidth); + BoxConstraints innerConstraints; + if (alignItems == FlexAlignItems.stretch) { + switch (_direction) { + case FlexDirection.horizontal: + innerConstraints = new BoxConstraints(maxWidth: constraints.maxWidth, + minHeight: constraints.minHeight, + maxHeight: constraints.maxHeight); + break; + case FlexDirection.vertical: + innerConstraints = new BoxConstraints(minWidth: constraints.minWidth, + maxWidth: constraints.maxWidth, + maxHeight: constraints.maxHeight); + break; + } + } else { + innerConstraints = constraints.loosen(); + } child.layout(innerConstraints, parentUsesSize: true); freeSpace -= _getMainSize(child); crossSize = math.max(crossSize, _getCrossSize(child)); @@ -372,6 +388,7 @@ class RenderFlex extends RenderBox with ContainerRenderObjectMixin