| OLD | NEW |
| 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 '../rendering/box.dart'; | 10 import '../rendering/box.dart'; |
| 11 import '../rendering/object.dart'; | 11 import '../rendering/object.dart'; |
| 12 import '../rendering/sky_binding.dart'; | 12 import '../rendering/sky_binding.dart'; |
| 13 import '../sky/hittest.dart'; |
| 13 | 14 |
| 14 export '../rendering/box.dart' show BoxConstraints, BoxDecoration, Border, Borde
rSide, EdgeDims; | 15 export '../rendering/box.dart' show BoxConstraints, BoxDecoration, Border, Borde
rSide, EdgeDims; |
| 15 export '../rendering/flex.dart' show FlexDirection; | 16 export '../rendering/flex.dart' show FlexDirection; |
| 16 export '../rendering/object.dart' show Point, Size, Rect, Color, Paint, Path; | 17 export '../rendering/object.dart' show Point, Size, Rect, Color, Paint, Path; |
| 17 | 18 |
| 18 final bool _shouldLogRenderDuration = false; | 19 final bool _shouldLogRenderDuration = false; |
| 19 | 20 |
| 20 // All Effen nodes derive from Widget. All nodes have a _parent, a _key and | 21 // All Effen nodes derive from Widget. All nodes have a _parent, a _key and |
| 21 // can be sync'd. | 22 // can be sync'd. |
| 22 abstract class Widget { | 23 abstract class Widget { |
| (...skipping 754 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 777 } | 778 } |
| 778 | 779 |
| 779 assert(root == this.root); // TODO(ianh): Remove this once the analyzer is c
leverer | 780 assert(root == this.root); // TODO(ianh): Remove this once the analyzer is c
leverer |
| 780 } | 781 } |
| 781 | 782 |
| 782 } | 783 } |
| 783 | 784 |
| 784 class WidgetSkyBinding extends SkyBinding { | 785 class WidgetSkyBinding extends SkyBinding { |
| 785 | 786 |
| 786 WidgetSkyBinding({ RenderView renderViewOverride: null }) | 787 WidgetSkyBinding({ RenderView renderViewOverride: null }) |
| 787 : super(renderViewOverride: renderViewOverride) { | 788 : super(renderViewOverride: renderViewOverride); |
| 788 assert(_skyBinding == null); | |
| 789 } | |
| 790 | 789 |
| 791 static WidgetSkyBinding _skyBinding; | |
| 792 static SkyBinding get skyBinding => _skyBinding; | |
| 793 static void initWidgetSkyBinding({ RenderView renderViewOverride: null }) { | 790 static void initWidgetSkyBinding({ RenderView renderViewOverride: null }) { |
| 794 if (_skyBinding == null) | 791 if (SkyBinding.instance == null) |
| 795 _skyBinding = new WidgetSkyBinding(renderViewOverride: renderViewOverride)
; | 792 new WidgetSkyBinding(renderViewOverride: renderViewOverride); |
| 793 assert(SkyBinding.instance is WidgetSkyBinding); |
| 796 } | 794 } |
| 797 | 795 |
| 798 void dispatchEvent(sky.Event event, HitTestResult result) { | 796 void dispatchEvent(sky.Event event, HitTestResult result) { |
| 799 assert(_skyBinding == this); | 797 assert(SkyBinding.instance == this); |
| 800 super.dispatchEvent(event, result); | 798 super.dispatchEvent(event, result); |
| 801 for (HitTestEntry entry in result.path.reversed) { | 799 for (HitTestEntry entry in result.path.reversed) { |
| 802 Widget target = RenderObjectWrapper._getMounted(entry.target); | 800 Widget target = RenderObjectWrapper._getMounted(entry.target); |
| 803 if (target == null) | 801 if (target == null) |
| 804 continue; | 802 continue; |
| 805 RenderObject targetRoot = target.root; | 803 RenderObject targetRoot = target.root; |
| 806 while (target != null && target.root == targetRoot) { | 804 while (target != null && target.root == targetRoot) { |
| 807 if (target is Listener) | 805 if (target is Listener) |
| 808 target._handleEvent(event); | 806 target._handleEvent(event); |
| 809 target = target._parent; | 807 target = target._parent; |
| (...skipping 24 matching lines...) Expand all Loading... |
| 834 assert(_dirty); | 832 assert(_dirty); |
| 835 assert(_mounted); | 833 assert(_mounted); |
| 836 assert(parent == null); | 834 assert(parent == null); |
| 837 _sync(null, null); | 835 _sync(null, null); |
| 838 } | 836 } |
| 839 | 837 |
| 840 } | 838 } |
| 841 | 839 |
| 842 class RenderViewWrapper extends OneChildRenderObjectWrapper { | 840 class RenderViewWrapper extends OneChildRenderObjectWrapper { |
| 843 RenderViewWrapper({ String key, Widget child }) : super(key: key, child: child
); | 841 RenderViewWrapper({ String key, Widget child }) : super(key: key, child: child
); |
| 844 | |
| 845 RenderView get root => super.root; | 842 RenderView get root => super.root; |
| 846 RenderView createNode() => WidgetSkyBinding._skyBinding.renderView; | 843 RenderView createNode() => SkyBinding.instance.renderView; |
| 847 } | 844 } |
| 848 | 845 |
| 849 class AppContainer extends AbstractWidgetRoot { | 846 class AppContainer extends AbstractWidgetRoot { |
| 850 AppContainer(this.app); | 847 AppContainer(this.app) { |
| 851 | 848 assert(SkyBinding.instance is WidgetSkyBinding); |
| 849 } |
| 852 final App app; | 850 final App app; |
| 853 | |
| 854 Widget build() => new RenderViewWrapper(child: app); | 851 Widget build() => new RenderViewWrapper(child: app); |
| 855 } | 852 } |
| 856 | 853 |
| 857 void runApp(App app, { RenderView renderViewOverride }) { | 854 void runApp(App app, { RenderView renderViewOverride }) { |
| 858 WidgetSkyBinding.initWidgetSkyBinding(renderViewOverride: renderViewOverride); | 855 WidgetSkyBinding.initWidgetSkyBinding(renderViewOverride: renderViewOverride); |
| 859 new AppContainer(app); | 856 new AppContainer(app); |
| 860 } | 857 } |
| 861 | 858 |
| 862 typedef Widget Builder(); | 859 typedef Widget Builder(); |
| 863 | 860 |
| (...skipping 30 matching lines...) Expand all Loading... |
| 894 if (root.parent == null) { | 891 if (root.parent == null) { |
| 895 // we haven't attached it yet | 892 // we haven't attached it yet |
| 896 assert(_container.child == null); | 893 assert(_container.child == null); |
| 897 _container.child = root; | 894 _container.child = root; |
| 898 } | 895 } |
| 899 assert(root.parent == _container); | 896 assert(root.parent == _container); |
| 900 } | 897 } |
| 901 | 898 |
| 902 Widget build() => builder(); | 899 Widget build() => builder(); |
| 903 } | 900 } |
| OLD | NEW |