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

Side by Side Diff: tools/dom/templates/html/dart2js/impl_MouseEvent.darttemplate

Issue 12493003: Exposing Point & Rect types (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Sync to ToT Created 7 years, 9 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of $LIBRARYNAME; 5 part of $LIBRARYNAME;
6 6
7 $(ANNOTATIONS)class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC { 7 $(ANNOTATIONS)class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC {
8 factory $CLASSNAME(String type, 8 factory $CLASSNAME(String type,
9 {Window view, int detail: 0, int screenX: 0, int screenY: 0, 9 {Window view, int detail: 0, int screenX: 0, int screenY: 0,
10 int clientX: 0, int clientY: 0, int button: 0, bool canBubble: true, 10 int clientX: 0, int clientY: 0, int button: 0, bool canBubble: true,
11 bool cancelable: true, bool ctrlKey: false, bool altKey: false, 11 bool cancelable: true, bool ctrlKey: false, bool altKey: false,
12 bool shiftKey: false, bool metaKey: false, EventTarget relatedTarget}) { 12 bool shiftKey: false, bool metaKey: false, EventTarget relatedTarget}) {
13 13
14 if (view == null) { 14 if (view == null) {
15 view = window; 15 view = window;
16 } 16 }
17 var event = document.$dom_createEvent('MouseEvent'); 17 var event = document.$dom_createEvent('MouseEvent');
18 event.$dom_initMouseEvent(type, canBubble, cancelable, view, detail, 18 event.$dom_initMouseEvent(type, canBubble, cancelable, view, detail,
19 screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, 19 screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey,
20 button, relatedTarget); 20 button, relatedTarget);
21 return event; 21 return event;
22 } 22 }
23 $!MEMBERS 23 $!MEMBERS
24 24
25 // TODO(amouravski): Move this documentation out of thise template files and 25 @deprecated
26 // put it into docs.json. Remember to add @DomName here. 26 int get clientX => client.x;
27 @deprecated
28 int get clientY => client.y;
29 @deprecated
30 int get offsetX => offset.x;
31 @deprecated
32 int get offsetY => offset.y;
33 @deprecated
34 int get movementX => movement.x;
35 @deprecated
36 int get movementY => movement.y;
37 @deprecated
38 int get screenX => screen.x;
39 @deprecated
40 int get screenY => screen.y;
41
42 @DomName('MouseEvent.clientX')
43 @DomName('MouseEvent.clientY')
44 Point get client => new Point($dom_clientX, $dom_clientY);
45
46 @DomName('MouseEvent.movementX')
47 @DomName('MouseEvent.movementY')
48 @SupportedBrowser(SupportedBrowser.CHROME)
49 @SupportedBrowser(SupportedBrowser.SAFARI)
50 @Experimental
51 Point get movement => new Point($dom_webkitMovementX, $dom_webkitMovementY);
52
27 /** 53 /**
28 * The X coordinate of the mouse pointer in target node coordinates. 54 * The coordinates of the mouse pointer in target node coordinates.
29 * 55 *
30 * This value may vary between platforms if the target node moves 56 * This value may vary between platforms if the target node moves
31 * after the event has fired or if the element has CSS transforms affecting 57 * after the event has fired or if the element has CSS transforms affecting
32 * it. 58 * it.
33 */ 59 */
34 int get offsetX { 60 Point get offset {
35 if (JS('bool', '!!#.offsetX', this)) { 61 if (JS('bool', '!!#.offsetX', this)) {
36 return JS('int', '#.offsetX', this); 62 var x = JS('int', '#.offsetX', this);
63 var y = JS('int', '#.offsetX', this);
64 return new Point(x, y);
37 } else { 65 } else {
38 // Firefox does not support offsetX. 66 // Firefox does not support offsetX.
39 var target = this.target; 67 var target = this.target;
40 if (!(target is Element)) { 68 if (!(target is Element)) {
41 throw new UnsupportedError( 69 throw new UnsupportedError(
42 'offsetX is only supported on elements'); 70 'offsetX is only supported on elements');
43 } 71 }
44 return this.clientX - this.target.getBoundingClientRect().left; 72 return (this.client -
73 this.target.getBoundingClientRect().topLeft).toInt();
45 } 74 }
46 } 75 }
47 76
48 /** 77 @DomName('MouseEvent.screenX')
49 * The Y coordinate of the mouse pointer in target node coordinates. 78 @DomName('MouseEvent.screenY')
50 * 79 Point get screen => new Point($dom_screenX, $dom_screenY);
51 * This value may vary between platforms if the target node moves
52 * after the event has fired or if the element has CSS transforms affecting
53 * it.
54 */
55 int get offsetY {
56 if (JS('bool', '!!#.offsetY', this)) {
57 return JS('int', '#.offsetY', this);
58 } else {
59 // Firefox does not support offsetY.
60 var target = this.target;
61 if (!(target is Element)) {
62 throw new UnsupportedError(
63 'offsetY is only supported on elements');
64 }
65 return this.clientY - this.target.getBoundingClientRect().top;
66 }
67 }
68 } 80 }
OLDNEW
« no previous file with comments | « tools/dom/src/dartium_KeyEvent.dart ('k') | tools/dom/templates/html/dartium/impl_MouseEvent.darttemplate » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698