| Index: sky/sdk/lib/rendering/object.dart
|
| diff --git a/sky/sdk/lib/rendering/object.dart b/sky/sdk/lib/rendering/object.dart
|
| index 094796673bd773229e0d0bcfdf5756fb265a21d1..25083a2c9a979d1c4216df6db2cb85b8ad825fb8 100644
|
| --- a/sky/sdk/lib/rendering/object.dart
|
| +++ b/sky/sdk/lib/rendering/object.dart
|
| @@ -80,11 +80,20 @@ abstract class RenderObject extends AbstractNode implements HitTestTarget {
|
| static List<RenderObject> _nodesNeedingLayout = new List<RenderObject>();
|
| static bool _debugDoingLayout = false;
|
| static bool get debugDoingLayout => _debugDoingLayout;
|
| + bool _debugDoingThisResize = false;
|
| + bool get debugDoingThisResize => _debugDoingThisResize;
|
| + bool _debugDoingThisLayout = false;
|
| + bool get debugDoingThisLayout => _debugDoingThisLayout;
|
| + static RenderObject _debugActiveLayout = null;
|
| + static RenderObject get debugActiveLayout => _debugActiveLayout;
|
| + bool _debugCanParentUseSize;
|
| + bool get debugCanParentUseSize => _debugCanParentUseSize;
|
| bool _needsLayout = true;
|
| bool get needsLayout => _needsLayout;
|
| RenderObject _relayoutSubtreeRoot;
|
| Constraints _constraints;
|
| Constraints get constraints => _constraints;
|
| + bool debugDoesMeetConstraints(); // override this in a subclass to verify that your state matches the constraints object
|
| bool debugAncestorsAlreadyMarkedNeedsLayout() {
|
| if (_relayoutSubtreeRoot == null)
|
| return true; // we haven't yet done layout even once, so there's nothing for us to do
|
| @@ -152,7 +161,14 @@ abstract class RenderObject extends AbstractNode implements HitTestTarget {
|
| void layoutWithoutResize() {
|
| try {
|
| assert(_relayoutSubtreeRoot == this);
|
| + _debugCanParentUseSize = false;
|
| + _debugDoingThisLayout = true;
|
| + RenderObject debugPreviousActiveLayout = _debugActiveLayout;
|
| + _debugActiveLayout = this;
|
| performLayout();
|
| + _debugActiveLayout = debugPreviousActiveLayout;
|
| + _debugDoingThisLayout = false;
|
| + _debugCanParentUseSize = null;
|
| } catch (e, stack) {
|
| print('Exception raised during layout of ${this}: ${e}');
|
| print(stack);
|
| @@ -172,9 +188,20 @@ abstract class RenderObject extends AbstractNode implements HitTestTarget {
|
| return;
|
| _constraints = constraints;
|
| _relayoutSubtreeRoot = relayoutSubtreeRoot;
|
| - if (sizedByParent)
|
| + _debugCanParentUseSize = parentUsesSize;
|
| + if (sizedByParent) {
|
| + _debugDoingThisResize = true;
|
| performResize();
|
| + _debugDoingThisResize = false;
|
| + }
|
| + _debugDoingThisLayout = true;
|
| + RenderObject debugPreviousActiveLayout = _debugActiveLayout;
|
| + _debugActiveLayout = this;
|
| performLayout();
|
| + _debugActiveLayout = debugPreviousActiveLayout;
|
| + _debugDoingThisLayout = false;
|
| + _debugCanParentUseSize = null;
|
| + assert(debugDoesMeetConstraints());
|
| _needsLayout = false;
|
| markNeedsPaint();
|
| assert(parent == this.parent); // TODO(ianh): Remove this once the analyzer is cleverer
|
| @@ -250,6 +277,8 @@ abstract class RenderObject extends AbstractNode implements HitTestTarget {
|
|
|
|
|
| String toString([String prefix = '']) {
|
| + RenderObject debugPreviousActiveLayout = _debugActiveLayout;
|
| + _debugActiveLayout = null;
|
| String header = '${runtimeType}';
|
| if (_relayoutSubtreeRoot != null && _relayoutSubtreeRoot != this) {
|
| int count = 1;
|
| @@ -265,7 +294,9 @@ abstract class RenderObject extends AbstractNode implements HitTestTarget {
|
| if (!attached)
|
| header += ' DETACHED';
|
| prefix += ' ';
|
| - return '${header}\n${debugDescribeSettings(prefix)}${debugDescribeChildren(prefix)}';
|
| + String result = '${header}\n${debugDescribeSettings(prefix)}${debugDescribeChildren(prefix)}';
|
| + _debugActiveLayout = debugPreviousActiveLayout;
|
| + return result;
|
| }
|
| String debugDescribeSettings(String prefix) => '${prefix}parentData: ${parentData}\n${prefix}constraints: ${constraints}\n';
|
| String debugDescribeChildren(String prefix) => '';
|
|
|