Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(718)

Unified Diff: sky/sdk/lib/framework/rendering/box.dart

Issue 1167293003: Split getIntrinsicDimensions into four pieces (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: more worky Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sky/sdk/lib/framework/rendering/block.dart ('k') | sky/sdk/lib/framework/rendering/flex.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 f40d2bc6e0b123f5ee766fdfd3d4a96d2e53be9d..b019cb4ed23a9bf2495b94253b662b83c844f952 100644
--- a/sky/sdk/lib/framework/rendering/box.dart
+++ b/sky/sdk/lib/framework/rendering/box.dart
@@ -127,13 +127,20 @@ abstract class RenderBox extends RenderObject {
child.parentData = new BoxParentData();
}
- // override this to report what dimensions you would have if you
- // were laid out with the given constraints this can walk the tree
- // if it must, but it should be as cheap as possible; just get the
- // dimensions and nothing else (e.g. don't calculate hypothetical
- // child positions if they're not needed to determine dimensions)
- Size getIntrinsicDimensions(BoxConstraints constraints) {
- return constraints.constrain(Size.zero);
+ double getMinIntrinsicWidth(BoxConstraints constraints) {
+ return constraints.constrainWidth(0.0);
+ }
+
+ double getMaxIntrinsicWidth(BoxConstraints constraints) {
+ return constraints.constrainWidth(0.0);
+ }
+
+ double getMinIntrinsicHeight(BoxConstraints constraints) {
+ return constraints.constrainHeight(0.0);
+ }
+
+ double getMaxIntrinsicHeight(BoxConstraints constraints) {
+ return constraints.constrainHeight(0.0);
}
BoxConstraints get constraints => super.constraints as BoxConstraints;
@@ -167,10 +174,28 @@ abstract class RenderProxyBox extends RenderBox with RenderObjectWithChildMixin<
this.child = child;
}
- Size getIntrinsicDimensions(BoxConstraints constraints) {
+ double getMinIntrinsicWidth(BoxConstraints constraints) {
if (child != null)
- return child.getIntrinsicDimensions(constraints);
- return super.getIntrinsicDimensions(constraints);
+ return child.getMinIntrinsicWidth(constraints);
+ return super.getMinIntrinsicWidth(constraints);
+ }
+
+ double getMaxIntrinsicWidth(BoxConstraints constraints) {
+ if (child != null)
+ return child.getMaxIntrinsicWidth(constraints);
+ return super.getMaxIntrinsicWidth(constraints);
+ }
+
+ double getMinIntrinsicHeight(BoxConstraints constraints) {
+ if (child != null)
+ return child.getMinIntrinsicHeight(constraints);
+ return super.getMinIntrinsicHeight(constraints);
+ }
+
+ double getMaxIntrinsicHeight(BoxConstraints constraints) {
+ if (child != null)
+ return child.getMaxIntrinsicHeight(constraints);
+ return super.getMaxIntrinsicHeight(constraints);
}
void performLayout() {
@@ -214,8 +239,20 @@ class RenderSizedBox extends RenderProxyBox {
markNeedsLayout();
}
- Size getIntrinsicDimensions(BoxConstraints constraints) {
- return constraints.constrain(_desiredSize);
+ 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() {
@@ -245,10 +282,28 @@ class RenderConstrainedBox extends RenderProxyBox {
markNeedsLayout();
}
- Size getIntrinsicDimensions(BoxConstraints constraints) {
- if (child == null)
- return constraints.constrain(Size.zero);
- return child.getIntrinsicDimensions(constraints.apply(_additionalConstraints));
+ double getMinIntrinsicWidth(BoxConstraints constraints) {
+ if (child != null)
+ return child.getMinIntrinsicWidth(constraints.apply(_additionalConstraints));
+ return constraints.constrainWidth(0.0);
+ }
+
+ double getMaxIntrinsicWidth(BoxConstraints constraints) {
+ if (child != null)
+ return child.getMaxIntrinsicWidth(constraints.apply(_additionalConstraints));
+ return constraints.constrainWidth(0.0);
+ }
+
+ double getMinIntrinsicHeight(BoxConstraints constraints) {
+ if (child != null)
+ return child.getMinIntrinsicHeight(constraints.apply(_additionalConstraints));
+ return constraints.constrainHeight(0.0);
+ }
+
+ double getMaxIntrinsicHeight(BoxConstraints constraints) {
+ if (child != null)
+ return child.getMaxIntrinsicHeight(constraints.apply(_additionalConstraints));
+ return constraints.constrainHeight(0.0);
}
void performLayout() {
@@ -294,12 +349,28 @@ class RenderPadding extends RenderBox with RenderObjectWithChildMixin<RenderBox>
markNeedsLayout();
}
- Size getIntrinsicDimensions(BoxConstraints constraints) {
- assert(padding != null);
- constraints = constraints.deflate(padding);
- if (child == null)
- return super.getIntrinsicDimensions(constraints);
- return child.getIntrinsicDimensions(constraints);
+ double getMinIntrinsicWidth(BoxConstraints constraints) {
+ if (child != null)
+ return child.getMinIntrinsicWidth(constraints.deflate(padding));
+ return constraints.constrainWidth(padding.left + padding.right);
+ }
+
+ double getMaxIntrinsicWidth(BoxConstraints constraints) {
+ if (child != null)
+ return child.getMaxIntrinsicWidth(constraints.deflate(padding));
+ return constraints.constrainWidth(padding.left + padding.right);
+ }
+
+ double getMinIntrinsicHeight(BoxConstraints constraints) {
+ if (child != null)
+ return child.getMinIntrinsicHeight(constraints.deflate(padding));
+ return constraints.constrainHeight(padding.top + padding.bottom);
+ }
+
+ double getMaxIntrinsicHeight(BoxConstraints constraints) {
+ if (child != null)
+ return child.getMaxIntrinsicHeight(constraints.deflate(padding));
+ return constraints.constrainHeight(padding.top + padding.bottom);
}
void performLayout() {
« no previous file with comments | « sky/sdk/lib/framework/rendering/block.dart ('k') | sky/sdk/lib/framework/rendering/flex.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698