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

Side by Side Diff: sky/sdk/lib/app/view.dart

Issue 1192543004: Create the addEventListener API (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: rebase 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 | « no previous file | 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:sky' as sky; 5 import 'dart:sky' as sky;
6 6
7 import '../rendering/box.dart'; 7 import '../rendering/box.dart';
8 import '../rendering/object.dart'; 8 import '../rendering/object.dart';
9 import 'scheduler.dart' as scheduler; 9 import 'scheduler.dart' as scheduler;
10 10
11 class PointerState { 11 class PointerState {
12 HitTestResult result; 12 HitTestResult result;
13 Point lastPosition; 13 Point lastPosition;
14 14
15 PointerState({ this.result, this.lastPosition }); 15 PointerState({ this.result, this.lastPosition });
16 } 16 }
17 17
18 typedef void EventListener(sky.Event event);
19
18 class AppView { 20 class AppView {
19 21
20 AppView({ RenderBox root: null, RenderView renderViewOverride }) { 22 AppView({ RenderBox root: null, RenderView renderViewOverride }) {
21 assert(_app == null); 23 assert(_app == null);
22 _app = this; 24 _app = this;
23 25
24 sky.view.setEventCallback(_handleEvent); 26 sky.view.setEventCallback(_handleEvent);
25 sky.view.setMetricsChangedCallback(_handleMetricsChanged); 27 sky.view.setMetricsChangedCallback(_handleMetricsChanged);
26 scheduler.init(); 28 scheduler.init();
27 scheduler.addPersistentFrameCallback(_beginFrame); 29 scheduler.addPersistentFrameCallback(_beginFrame);
(...skipping 16 matching lines...) Expand all
44 RenderView _renderView; 46 RenderView _renderView;
45 RenderView get renderView => _renderView; 47 RenderView get renderView => _renderView;
46 48
47 ViewConstraints get _viewConstraints => 49 ViewConstraints get _viewConstraints =>
48 new ViewConstraints(width: sky.view.width, height: sky.view.height); 50 new ViewConstraints(width: sky.view.width, height: sky.view.height);
49 51
50 Map<int, PointerState> _stateForPointer = new Map<int, PointerState>(); 52 Map<int, PointerState> _stateForPointer = new Map<int, PointerState>();
51 53
52 Function onFrame; 54 Function onFrame;
53 55
54 List<sky.EventListener> eventListeners = new List<sky.EventListener>(); 56 final List<EventListener> _eventListeners = new List<EventListener>();
57 void addEventListener(EventListener e) => _eventListeners.add(e);
58 void removeEventListener(EventListener e) => _eventListeners.remove(e);
55 59
56 RenderBox get root => _renderView.child; 60 RenderBox get root => _renderView.child;
57 void set root(RenderBox value) { 61 void set root(RenderBox value) {
58 _renderView.child = value; 62 _renderView.child = value;
59 } 63 }
60 void _beginFrame(double timeStamp) { 64 void _beginFrame(double timeStamp) {
61 if (onFrame != null) 65 if (onFrame != null)
62 onFrame(); 66 onFrame();
63 RenderObject.flushLayout(); 67 RenderObject.flushLayout();
64 _renderView.paintFrame(); 68 _renderView.paintFrame();
65 } 69 }
66 70
67 void _handleEvent(sky.Event event) { 71 void _handleEvent(sky.Event event) {
68 if (event is sky.PointerEvent) { 72 if (event is sky.PointerEvent) {
69 _handlePointerEvent(event); 73 _handlePointerEvent(event);
70 } else if (event is sky.GestureEvent) { 74 } else if (event is sky.GestureEvent) {
71 HitTestResult result = new HitTestResult(); 75 HitTestResult result = new HitTestResult();
72 _renderView.hitTest(result, position: new Point(event.x, event.y)); 76 _renderView.hitTest(result, position: new Point(event.x, event.y));
73 dispatchEvent(event, result); 77 dispatchEvent(event, result);
74 } else { 78 } else {
75 for (sky.EventListener listener in eventListeners) { 79 for (EventListener e in _eventListeners) {
76 listener(event); 80 e(event);
77 } 81 }
78 } 82 }
79 } 83 }
80 84
81 void _handleMetricsChanged() { 85 void _handleMetricsChanged() {
82 _renderView.rootConstraints = _viewConstraints; 86 _renderView.rootConstraints = _viewConstraints;
83 } 87 }
84 88
85 PointerState _createStateForPointer(sky.PointerEvent event, Point position) { 89 PointerState _createStateForPointer(sky.PointerEvent event, Point position) {
86 HitTestResult result = new HitTestResult(); 90 HitTestResult result = new HitTestResult();
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 entry.target.handleEvent(event, entry); 127 entry.target.handleEvent(event, entry);
124 } 128 }
125 129
126 String toString() => 'Render Tree:\n${_renderView}'; 130 String toString() => 'Render Tree:\n${_renderView}';
127 131
128 void debugDumpRenderTree() { 132 void debugDumpRenderTree() {
129 toString().split('\n').forEach(print); 133 toString().split('\n').forEach(print);
130 } 134 }
131 135
132 } 136 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698