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

Unified Diff: sdk/lib/html/src/dart2js_KeyEvent.dart

Issue 11416249: Make KeyboardEvent cross-browser consistent. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: moved instance variables to constructor Created 8 years, 1 month 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 | « sdk/lib/html/src/KeyboardEventController.dart ('k') | sdk/lib/html/src/dartium_KeyEvent.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sdk/lib/html/src/dart2js_KeyEvent.dart
diff --git a/sdk/lib/html/src/dart2js_KeyEvent.dart b/sdk/lib/html/src/dart2js_KeyEvent.dart
new file mode 100644
index 0000000000000000000000000000000000000000..4974d5115dc777aeb0dc3d6f7625ed904a281cbc
--- /dev/null
+++ b/sdk/lib/html/src/dart2js_KeyEvent.dart
@@ -0,0 +1,103 @@
+/**
+ * A custom KeyboardEvent that attempts to eliminate cross-browser
+ * inconsistencies, and also provide both keyCode and charCode information
+ * for all key events (when such information can be determined).
+ *
+ * This class is very much a work in progress, and we'd love to get information
+ * on how we can make this class work with as many international keyboards as
+ * possible. Bugs welcome!
+ */
+class KeyEvent implements KeyboardEvent {
+ /** The parent KeyboardEvent that this KeyEvent is wrapping and "fixing". */
+ KeyboardEvent _parent;
+
+ /** The "fixed" value of whether the alt key is being pressed. */
+ bool _shadowAltKey;
+
+ /** Caculated value of what the estimated charCode is for this event. */
+ int _shadowCharCode;
+
+ /** Caculated value of what the estimated keyCode is for this event. */
+ int _shadowKeyCode;
+
+ /** Caculated value of what the estimated keyCode is for this event. */
+ int get keyCode => _shadowKeyCode;
+
+ /** Caculated value of what the estimated charCode is for this event. */
+ int get charCode => this.type == 'keypress' ? _shadowCharCode : 0;
+
+ /** Caculated value of whether the alt key is pressed is for this event. */
+ bool get altKey => _shadowAltKey;
+
+ /** Caculated value of what the estimated keyCode is for this event. */
+ int get which => keyCode;
+
+ /** Accessor to the underlying keyCode value is the parent event. */
+ int get _realKeyCode => JS('int', '#.keyCode', _parent);
+
+ /** Accessor to the underlying charCode value is the parent event. */
+ int get _realCharCode => JS('int', '#.charCode', _parent);
+
+ /** Accessor to the underlying altKey value is the parent event. */
+ bool get _realAltKey => JS('int', '#.altKey', _parent);
+
+ /** Construct a KeyEvent with [parent] as event we're emulating. */
+ KeyEvent(KeyboardEvent parent) {
+ _parent = parent;
+ _shadowAltKey = _realAltKey;
+ _shadowCharCode = _realCharCode;
+ _shadowKeyCode = _realKeyCode;
+ }
+
+ /** True if the altGraphKey is pressed during this event. */
+ bool get altGraphKey => _parent.altGraphKey;
+ bool get bubbles => _parent.bubbles;
+ /** True if this event can be cancelled. */
+ bool get cancelable => _parent.cancelable;
+ bool get cancelBubble => _parent.cancelBubble;
+ set cancelBubble(bool cancel) => _parent = cancel;
+ /** Accessor to the clipboardData available for this event. */
+ Clipboard get clipboardData => _parent.clipboardData;
+ /** True if the ctrl key is pressed during this event. */
+ bool get ctrlKey => _parent.ctrlKey;
+ /** Accessor to the target this event is listening to for changes. */
+ EventTarget get currentTarget => _parent.currentTarget;
+ bool get defaultPrevented => _parent.defaultPrevented;
+ int get detail => _parent.detail;
+ int get eventPhase => _parent.eventPhase;
+ /**
+ * Accessor to the part of the keyboard that the key was pressed from (one of
+ * KeyLocation.STANDARD, KeyLocation.RIGHT, KeyLocation.LEFT,
+ * KeyLocation.NUMPAD, KeyLocation.MOBILE, KeyLocation.JOYSTICK).
+ */
+ int get keyLocation => _parent.keyLocation;
+ int get layerX => _parent.layerX;
+ int get layerY => _parent.layerY;
+ /** True if the Meta (or Mac command) key is pressed during this event. */
+ bool get metaKey => _parent.metaKey;
+ int get pageX => _parent.pageX;
+ int get pageY => _parent.pageY;
+ bool get returnValue => _parent.returnValue;
+ set returnValue(bool value) => _parent = value;
+ /** True if the shift key was pressed during this event. */
+ bool get shiftKey => _parent.shiftKey;
+ int get timeStamp => _parent.timeStamp;
+ /**
+ * The type of key event that occurred. One of "keydown", "keyup", or
+ * "keypress".
+ */
+ String get type => _parent.type;
+ Window get view => _parent.view;
+ void preventDefault() => _parent.preventDefault();
+ void stopImmediatePropagation() => _parent.stopImmediatePropagation();
+ void stopPropagation() => _parent.stopPropagation();
+ void $dom_initUIEvent(String type, bool canBubble, bool cancelable,
+ LocalWindow view, int detail) {
+ throw new UnsupportedError("Cannot initialize a UI Event from a KeyEvent.");
+ }
+ void $dom_initEvent(String eventTypeArg, bool canBubbleArg,
+ bool cancelableArg) {
+ throw new UnsupportedError("Cannot initialize an Event from a KeyEvent.");
+ }
+ String get _shadowKeyIdentifier => JS('String', '#.keyIdentifier', _parent);
+}
« no previous file with comments | « sdk/lib/html/src/KeyboardEventController.dart ('k') | sdk/lib/html/src/dartium_KeyEvent.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698