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

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

Issue 11416249: Make KeyboardEvent cross-browser consistent. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: documentation fix 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
Index: sdk/lib/html/src/dartium_KeyEvent.dart
diff --git a/sdk/lib/html/src/dartium_KeyEvent.dart b/sdk/lib/html/src/dartium_KeyEvent.dart
new file mode 100644
index 0000000000000000000000000000000000000000..86a1bae17c3520bcf21e5f9c10cf82920f82b141
--- /dev/null
+++ b/sdk/lib/html/src/dartium_KeyEvent.dart
@@ -0,0 +1,60 @@
+/**
+ * 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 => _parent.keyCode;
+
+ /** Accessor to the underlying charCode value is the parent event. */
+ int get _realCharCode => _parent.charCode;
+
+ /** Accessor to the underlying altKey value is the parent event. */
+ bool get _realAltKey => _parent.altKey;
+
+ /** Construct a KeyEvent with [parent] as event we're emulating. */
+ KeyEvent(KeyboardEvent parent) {
+ _parent = parent;
+ _shadowAltKey = _realAltKey;
+ _shadowCharCode = _realCharCode;
+ _shadowKeyCode = _realKeyCode;
+ }
+
+ /**
+ * Catch-all to behave for all other methods not defined here just like the
+ * _parent.
+ */
+ void noSuchMethod(InvocationMirror invocation) {
+ invocation.invokeOn(_parent);
+ }
+ String get _shadowKeyIdentifier => _parent.$dom_keyIdentifier;
+}

Powered by Google App Engine
This is Rietveld 408576698