Index: sky/sdk/lib/rendering/sky_binding.dart |
diff --git a/sky/sdk/lib/rendering/sky_binding.dart b/sky/sdk/lib/rendering/sky_binding.dart |
index 56f306fae1bd3f5cd35c2d40f140ce00f5835976..ad325b2f6c96a5f2bd9b84b4aa15fb6e6e870c5f 100644 |
--- a/sky/sdk/lib/rendering/sky_binding.dart |
+++ b/sky/sdk/lib/rendering/sky_binding.dart |
@@ -4,15 +4,15 @@ |
import 'dart:sky' as sky; |
-import '../app/scheduler.dart' as scheduler; |
+import '../sky/scheduler.dart' as scheduler; |
+import '../sky/hittest.dart'; |
import 'box.dart'; |
import 'object.dart'; |
class PointerState { |
+ PointerState({ this.result, this.lastPosition }); |
HitTestResult result; |
Point lastPosition; |
- |
- PointerState({ this.result, this.lastPosition }); |
} |
typedef void EventListener(sky.Event event); |
@@ -20,43 +20,41 @@ typedef void EventListener(sky.Event event); |
class SkyBinding { |
SkyBinding({ RenderBox root: null, RenderView renderViewOverride }) { |
- assert(_app == null); |
- _app = this; |
+ assert(_instance == null); |
+ _instance = this; |
sky.view.setEventCallback(_handleEvent); |
+ |
sky.view.setMetricsChangedCallback(_handleMetricsChanged); |
scheduler.init(); |
- scheduler.addPersistentFrameCallback(_beginFrame); |
- |
if (renderViewOverride == null) { |
_renderView = new RenderView(child: root); |
_renderView.attach(); |
- _renderView.rootConstraints = _viewConstraints; |
+ _renderView.rootConstraints = _createConstraints(); |
_renderView.scheduleInitialLayout(); |
} else { |
_renderView = renderViewOverride; |
} |
assert(_renderView != null); |
+ scheduler.addPersistentFrameCallback(_beginFrame); |
- assert(_app == this); |
+ assert(_instance == this); |
} |
- static SkyBinding _app; // used to enforce that we're a singleton |
+ static SkyBinding _instance; // used to enforce that we're a singleton |
+ static SkyBinding get instance => _instance; |
RenderView _renderView; |
RenderView get renderView => _renderView; |
- ViewConstraints get _viewConstraints => |
- new ViewConstraints(width: sky.view.width, height: sky.view.height); |
- |
- Map<int, PointerState> _stateForPointer = new Map<int, PointerState>(); |
+ ViewConstraints _createConstraints() { |
+ return new ViewConstraints(width: sky.view.width, height: sky.view.height); |
+ } |
+ void _handleMetricsChanged() { |
+ _renderView.rootConstraints = _createConstraints(); |
+ } |
Function onFrame; |
- |
- final List<EventListener> _eventListeners = new List<EventListener>(); |
- void addEventListener(EventListener e) => _eventListeners.add(e); |
- bool removeEventListener(EventListener e) => _eventListeners.remove(e); |
- |
RenderBox get root => _renderView.child; |
void set root(RenderBox value) { |
_renderView.child = value; |
@@ -68,6 +66,10 @@ class SkyBinding { |
_renderView.paintFrame(); |
} |
+ final List<EventListener> _eventListeners = new List<EventListener>(); |
+ void addEventListener(EventListener e) => _eventListeners.add(e); |
+ bool removeEventListener(EventListener e) => _eventListeners.remove(e); |
+ |
void _handleEvent(sky.Event event) { |
if (event is sky.PointerEvent) { |
_handlePointerEvent(event); |
@@ -76,15 +78,12 @@ class SkyBinding { |
_renderView.hitTest(result, position: new Point(event.x, event.y)); |
dispatchEvent(event, result); |
} else { |
- for (EventListener e in _eventListeners) { |
+ for (EventListener e in _eventListeners) |
e(event); |
- } |
} |
} |
- void _handleMetricsChanged() { |
- _renderView.rootConstraints = _viewConstraints; |
- } |
+ Map<int, PointerState> _stateForPointer = new Map<int, PointerState>(); |
PointerState _createStateForPointer(sky.PointerEvent event, Point position) { |
HitTestResult result = new HitTestResult(); |