From f67bd7d7450f52f2649df7a4e79eb0ed726e2580 Mon Sep 17 00:00:00 2001 From: Hixie Date: Thu, 22 Oct 2015 15:40:26 -0700 Subject: [PATCH] Fix size magic The magic for updating DebugSize's knowledge about whether it was allowed to be used by the parent or not previously failed to correctly deal with sizedByParent. --- packages/flutter/lib/src/rendering/object.dart | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/flutter/lib/src/rendering/object.dart b/packages/flutter/lib/src/rendering/object.dart index db6435636e..a9626b6113 100644 --- a/packages/flutter/lib/src/rendering/object.dart +++ b/packages/flutter/lib/src/rendering/object.dart @@ -679,6 +679,8 @@ abstract class RenderObject extends AbstractNode implements HitTestTarget { /// implemented here) to return early if the child does not need to do any /// work to update its layout information. void layout(Constraints constraints, { bool parentUsesSize: false }) { + assert(!_debugDoingThisResize); + assert(!_debugDoingThisLayout); final RenderObject parent = this.parent; RenderObject relayoutSubtreeRoot; if (!parentUsesSize || sizedByParent || constraints.isTight || parent is! RenderObject) @@ -694,12 +696,14 @@ abstract class RenderObject extends AbstractNode implements HitTestTarget { assert(() { // in case parentUsesSize changed since the last invocation, set size // to itself, so it has the right internal debug values. - _debugDoingThisLayout = true; + _debugDoingThisResize = sizedByParent; + _debugDoingThisLayout = !sizedByParent; RenderObject debugPreviousActiveLayout = _debugActiveLayout; _debugActiveLayout = this; debugResetSize(); _debugActiveLayout = debugPreviousActiveLayout; _debugDoingThisLayout = false; + _debugDoingThisResize = false; return true; }); return;