| Index: client/layout/ViewLayout.dart
|
| diff --git a/client/layout/ViewLayout.dart b/client/layout/ViewLayout.dart
|
| index a19c64fe4f3bdffe44379187ba48755b7f5a83d1..b79ad29b77df456c7d16c5a95560e79c44203c5f 100644
|
| --- a/client/layout/ViewLayout.dart
|
| +++ b/client/layout/ViewLayout.dart
|
| @@ -1,4 +1,4 @@
|
| -// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
|
| +// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
|
| // for details. All rights reserved. Use of this source code is governed by a
|
| // BSD-style license that can be found in the LICENSE file.
|
|
|
| @@ -27,7 +27,7 @@ interface Positionable {
|
| class LayoutParams {
|
| // TODO(jmesserly): should be const, but there's a bug in DartC preventing us
|
| // from calling "window." in an initializer. See b/5332777
|
| - Future<CSSStyleDeclaration> style;
|
| + CSSStyleDeclaration style;
|
|
|
| int get layer() => 0;
|
|
|
| @@ -71,7 +71,8 @@ class ViewLayout {
|
| * to determine how this view should be laid out.
|
| */
|
| LayoutParams layoutParams;
|
| - Future<ElementRect> _cachedViewRect;
|
| + int _currentWidth;
|
| + int _currentHeight;
|
|
|
| /** The view that this layout belongs to. */
|
| final Positionable view;
|
| @@ -102,19 +103,17 @@ class ViewLayout {
|
| return view.customStyle['display'] == "-dart-grid";
|
| }
|
|
|
| - CSSStyleDeclaration get _style() => layoutParams.style.value;
|
| + CSSStyleDeclaration get _style() => layoutParams.style;
|
|
|
| void cacheExistingBrowserLayout() {
|
| - _cachedViewRect = view.node.rect;
|
| + assert(window.inMeasurementFrame);
|
| + final rect = view.node.rect.offset;
|
| + _currentWidth = rect.width;
|
| + _currentHeight = rect.height;
|
| }
|
|
|
| - int get currentWidth() {
|
| - return _cachedViewRect.value.offset.width;
|
| - }
|
| -
|
| - int get currentHeight() {
|
| - return _cachedViewRect.value.offset.height;
|
| - }
|
| + int get currentWidth() => _currentWidth;
|
| + int get currentHeight() => _currentHeight;
|
|
|
| int get borderLeftWidth() => _toPixels(_style.borderLeftWidth);
|
| int get borderTopWidth() => _toPixels(_style.borderTopWidth);
|
| @@ -124,7 +123,7 @@ class ViewLayout {
|
| int get borderHeight() => borderTopWidth + borderBottomWidth;
|
|
|
| /** Implements the custom layout computation. */
|
| - void measureLayout(Future<Size> size, Completer<bool> changed) {
|
| + bool measureLayout(int width, int height) {
|
| }
|
|
|
| /**
|
| @@ -140,13 +139,12 @@ class ViewLayout {
|
| // Note: we need to save the client height
|
| _measuredWidth = width - borderWidth;
|
| _measuredHeight = height - borderHeight;
|
| - final completer = new Completer<Size>();
|
| - completer.complete(new Size(_measuredWidth, _measuredHeight));
|
| - measureLayout(completer.future, null);
|
| + measureLayout(_measuredWidth, _measuredHeight);
|
| }
|
|
|
| /** Applies the layout to the node. */
|
| void applyLayout() {
|
| + assert(!window.inMeasurementFrame);
|
| if (_measuredLeft != null) {
|
| // TODO(jmesserly): benchmark the performance of this DOM interaction
|
| final style = view.node.style;
|
| @@ -188,7 +186,7 @@ class ViewLayout {
|
| }
|
|
|
| int measureWidth(ViewLayout parent, ContentSizeMode mode) {
|
| - final style = layoutParams.style.value;
|
| + final style = layoutParams.style;
|
| switch (mode) {
|
| case ContentSizeMode.MIN:
|
| return _styleToPixels(
|
| @@ -201,7 +199,7 @@ class ViewLayout {
|
| }
|
|
|
| int measureHeight(ViewLayout parent, ContentSizeMode mode) {
|
| - final style = layoutParams.style.value;
|
| + final style = layoutParams.style;
|
| switch (mode) {
|
| case ContentSizeMode.MIN:
|
| return _styleToPixels(
|
|
|