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

Side by Side Diff: sky/sdk/lib/framework/widgets/ui_node.dart

Issue 1183503003: Add an example of an app that manipulates both a RenderObject tree and has some fn logic in it. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: 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 unified diff | Download patch
« no previous file with comments | « sky/sdk/lib/framework/rendering/box.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 import 'dart:async'; 5 import 'dart:async';
6 import 'dart:collection'; 6 import 'dart:collection';
7 import 'dart:mirrors'; 7 import 'dart:mirrors';
8 import 'dart:sky' as sky; 8 import 'dart:sky' as sky;
9 9
10 import '../app.dart'; 10 import '../app.dart';
(...skipping 10 matching lines...) Expand all
21 final bool _shouldLogRenderDuration = false; 21 final bool _shouldLogRenderDuration = false;
22 22
23 /* 23 /*
24 * All Effen nodes derive from UINode. All nodes have a _parent, a _key and 24 * All Effen nodes derive from UINode. All nodes have a _parent, a _key and
25 * can be sync'd. 25 * can be sync'd.
26 */ 26 */
27 abstract class UINode { 27 abstract class UINode {
28 28
29 UINode({ Object key }) { 29 UINode({ Object key }) {
30 _key = key == null ? "$runtimeType" : "$runtimeType-$key"; 30 _key = key == null ? "$runtimeType" : "$runtimeType-$key";
31 assert(this is App || _inRenderDirtyComponents); // you should not build the UI tree ahead of time, build it only during build() 31 assert(this is AbstractUINodeRoot || _inRenderDirtyComponents); // you shoul d not build the UI tree ahead of time, build it only during build()
32 } 32 }
33 33
34 String _key; 34 String _key;
35 String get key => _key; 35 String get key => _key;
36 36
37 UINode _parent; 37 UINode _parent;
38 UINode get parent => _parent; 38 UINode get parent => _parent;
39 39
40 bool _mounted = false; 40 bool _mounted = false;
41 bool _wasMounted = false; 41 bool _wasMounted = false;
(...skipping 703 matching lines...) Expand 10 before | Expand all | Expand 10 after
745 } 745 }
746 746
747 747
748 class UINodeAppView extends AppView { 748 class UINodeAppView extends AppView {
749 749
750 UINodeAppView() { 750 UINodeAppView() {
751 assert(_appView == null); 751 assert(_appView == null);
752 } 752 }
753 753
754 static UINodeAppView _appView; 754 static UINodeAppView _appView;
755 static AppView get appView => _appView;
755 static void initUINodeAppView() { 756 static void initUINodeAppView() {
756 if (_appView == null) 757 if (_appView == null)
757 _appView = new UINodeAppView(); 758 _appView = new UINodeAppView();
758 } 759 }
759 760
760 void dispatchEvent(sky.Event event, HitTestResult result) { 761 void dispatchEvent(sky.Event event, HitTestResult result) {
761 assert(_appView == this); 762 assert(_appView == this);
762 super.dispatchEvent(event, result); 763 super.dispatchEvent(event, result);
763 for (HitTestEntry entry in result.path.reversed) { 764 for (HitTestEntry entry in result.path.reversed) {
764 UINode target = RenderObjectWrapper._getMounted(entry.target); 765 UINode target = RenderObjectWrapper._getMounted(entry.target);
(...skipping 29 matching lines...) Expand all
794 assert(parent == null); 795 assert(parent == null);
795 _sync(null, null); 796 _sync(null, null);
796 } 797 }
797 798
798 } 799 }
799 800
800 abstract class App extends AbstractUINodeRoot { 801 abstract class App extends AbstractUINodeRoot {
801 802
802 App(); 803 App();
803 804
804 AppView get appView => UINodeAppView._appView;
805
806 void _buildIfDirty() { 805 void _buildIfDirty() {
807 super._buildIfDirty(); 806 super._buildIfDirty();
808 807
809 if (root.parent == null) { 808 if (root.parent == null) {
810 // we haven't attached it yet 809 // we haven't attached it yet
811 UINodeAppView._appView.root = root; 810 UINodeAppView._appView.root = root;
812 } 811 }
813 assert(root.parent is RenderView); 812 assert(root.parent is RenderView);
814 } 813 }
815 814
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
851 // we haven't attached it yet 850 // we haven't attached it yet
852 assert(_container.child == null); 851 assert(_container.child == null);
853 _container.child = root; 852 _container.child = root;
854 } 853 }
855 assert(root.parent == _container); 854 assert(root.parent == _container);
856 } 855 }
857 856
858 UINode build() => builder(); 857 UINode build() => builder();
859 858
860 } 859 }
OLDNEW
« no previous file with comments | « sky/sdk/lib/framework/rendering/box.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698