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

Unified Diff: sky/sdk/lib/framework/app.dart

Issue 1146923005: Fix gesture events in fn2 (Closed) Base URL: git@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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sky/examples/stocks2/lib/stock_app.dart ('k') | sky/sdk/lib/framework/fn2.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sky/sdk/lib/framework/app.dart
diff --git a/sky/sdk/lib/framework/app.dart b/sky/sdk/lib/framework/app.dart
index 38113d44ca55d529189a01d601bcbad4bc04d06b..f0dce51ce55edfb4e2f143bd55ae33d7a9ee5303 100644
--- a/sky/sdk/lib/framework/app.dart
+++ b/sky/sdk/lib/framework/app.dart
@@ -43,8 +43,21 @@ class AppView {
}
void _handleEvent(sky.Event event) {
- if (event is sky.PointerEvent)
+ if (event is sky.PointerEvent) {
_handlePointerEvent(event);
+ } else if (event is sky.GestureEvent) {
+ HitTestResult result = new HitTestResult();
+ _renderView.hitTest(result, position: new sky.Point(event.x, event.y));
+ dispatchEvent(event, result);
+ }
+ }
+
+ PointerState _createStateForPointer(sky.PointerEvent event, sky.Point position) {
+ HitTestResult result = new HitTestResult();
+ _renderView.hitTest(result, position: position);
+ PointerState state = new PointerState(result: result, lastPosition: position);
+ _stateForPointer[event.pointer] = state;
+ return state;
}
void _handlePointerEvent(sky.PointerEvent event) {
@@ -53,10 +66,7 @@ class AppView {
PointerState state;
switch(event.type) {
case 'pointerdown':
- HitTestResult result = new HitTestResult();
- _renderView.hitTest(result, position: position);
- state = new PointerState(result: result, lastPosition: position);
- _stateForPointer[event.pointer] = state;
+ state = _createStateForPointer(event, position);
break;
case 'pointerup':
case 'pointercancel':
@@ -66,22 +76,20 @@ class AppView {
case 'pointermove':
state = _stateForPointer[event.pointer];
// In the case of mouse hover we won't already have a cached down.
- if (state.result == null) {
- state.result = new HitTestResult();
- _renderView.hitTest(state.result, position: position);
- }
+ if (state == null)
+ state = _createStateForPointer(event, position);
break;
}
event.dx = position.x - state.lastPosition.x;
event.dy = position.y - state.lastPosition.y;
state.lastPosition = position;
- dispatchPointerEvent(event, state.result);
+ dispatchEvent(event, state.result);
}
- void dispatchPointerEvent(sky.PointerEvent event, HitTestResult result) {
+ void dispatchEvent(sky.Event event, HitTestResult result) {
assert(result != null);
for (RenderNode node in result.path.reversed)
- node.handlePointer(event);
+ node.handleEvent(event);
}
}
« no previous file with comments | « sky/examples/stocks2/lib/stock_app.dart ('k') | sky/sdk/lib/framework/fn2.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698