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

Side by Side Diff: sky/framework/fn.dart

Issue 1122413006: [Effen] Move 'flex' out of CSS also. (mark II) (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 library fn; 5 library fn;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:collection'; 8 import 'dart:collection';
9 import 'dart:sky' as sky; 9 import 'dart:sky' as sky;
10 import 'reflect.dart' as reflect; 10 import 'reflect.dart' as reflect;
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 super._remove(); 141 super._remove();
142 } 142 }
143 } 143 }
144 144
145 class StyleNode extends ContentNode { 145 class StyleNode extends ContentNode {
146 final Style style; 146 final Style style;
147 147
148 StyleNode(UINode content, this.style): super(content); 148 StyleNode(UINode content, this.style): super(content);
149 } 149 }
150 150
151 class ParentDataNode extends ContentNode {
152 final ParentData parentData;
153
154 ParentDataNode(UINode content, this.parentData): super(content);
155 }
156
151 /* 157 /*
152 * SkyNodeWrappers correspond to a desired state of a RenderCSS. They are fully 158 * SkyNodeWrappers correspond to a desired state of a RenderCSS. They are fully
153 * immutable, with one exception: A UINode which is a Component which lives with in 159 * immutable, with one exception: A UINode which is a Component which lives with in
154 * an SkyElementWrapper's children list, may be replaced with the "old" instance if it 160 * an SkyElementWrapper's children list, may be replaced with the "old" instance if it
155 * has become stateful. 161 * has become stateful.
156 */ 162 */
157 abstract class SkyNodeWrapper extends UINode { 163 abstract class SkyNodeWrapper extends UINode {
158 164
159 static final Map<RenderCSS, SkyNodeWrapper> _nodeMap = 165 static final Map<RenderCSS, SkyNodeWrapper> _nodeMap =
160 new HashMap<RenderCSS, SkyNodeWrapper>(); 166 new HashMap<RenderCSS, SkyNodeWrapper>();
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 } 388 }
383 return false; 389 return false;
384 } 390 }
385 391
386 void _syncNode(SkyNodeWrapper old) { 392 void _syncNode(SkyNodeWrapper old) {
387 SkyElementWrapper oldSkyElementWrapper = old as SkyElementWrapper; 393 SkyElementWrapper oldSkyElementWrapper = old as SkyElementWrapper;
388 394
389 List<Style> styles = new List<Style>(); 395 List<Style> styles = new List<Style>();
390 if (style != null) 396 if (style != null)
391 styles.add(style); 397 styles.add(style);
398 ParentData parentData = null;
392 UINode parent = _parent; 399 UINode parent = _parent;
393 while (parent != null && parent is! SkyNodeWrapper) { 400 while (parent != null && parent is! SkyNodeWrapper) {
394 if (parent is StyleNode && parent.style != null) 401 if (parent is StyleNode && parent.style != null)
395 styles.add(parent.style); 402 styles.add(parent.style);
403 else
404 if (parent is ParentDataNode && parent.parentData != null) {
405 if (parentData != null)
406 parentData.merge(parent.parentData); // this will throw if the types a ren't the same
407 else
408 parentData = parent.parentData;
409 }
396 parent = parent._parent; 410 parent = parent._parent;
397 } 411 }
398 _root.updateStyles(styles); 412 _root.updateStyles(styles);
399 413 if (parentData != null) {
414 assert(_root.parentData != null);
415 _root.parentData.merge(parentData); // this will throw if the types aren't approriate
416 assert(parent != null);
417 assert(parent._root != null);
418 parent._root.markNeedsLayout();
419 }
400 _root.updateInlineStyle(inlineStyle); 420 _root.updateInlineStyle(inlineStyle);
401 421
402 _syncChildren(oldSkyElementWrapper); 422 _syncChildren(oldSkyElementWrapper);
403 } 423 }
404 424
405 void _syncChildren(SkyElementWrapper oldSkyElementWrapper) { 425 void _syncChildren(SkyElementWrapper oldSkyElementWrapper) {
406 if (_root is! RenderCSSContainer) 426 if (_root is! RenderCSSContainer)
407 return; 427 return;
408 428
409 var startIndex = 0; 429 var startIndex = 0;
(...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after
828 } 848 }
829 849
830 void _buildIfDirty() { 850 void _buildIfDirty() {
831 if (!_dirty || _defunct) 851 if (!_dirty || _defunct)
832 return; 852 return;
833 853
834 _trace('$_key rebuilding...'); 854 _trace('$_key rebuilding...');
835 _sync(null, _host, _root); 855 _sync(null, _host, _root);
836 } 856 }
837 } 857 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698