Fix getEventModifierState, no allocations
Alternative to #1637 that doesn't allocate on every event. Test Plan: Crossed fingers.
Ben Alpert committed
Jun 3, 2014 at 14:27 UTC
e501238c1010f68fe9b57ac7453ca9fd9d2598d7
1 file changed
+15
-7
src/browser/ui/dom/getEventModifierState.js
+15
-7
@@ -31,14 +31,22 @@ var modifierKeyToProp = {
31
'shift': 'shiftKey'
32
};
33
34
+// IE8 does not implement getModifierState so we simply map it to the only
35
+// modifier keys exposed by the event itself, does not support Lock-keys.
36
+// Currently, all major browsers except Chrome seems to support Lock-keys.
37
+function modifierStateGetter(keyArg) {
38
+ /*jshint validthis:true */
39
+ var syntheticEvent = this;
40
+ var nativeEvent = syntheticEvent.nativeEvent;
41
+ if (nativeEvent.getModifierState) {
42
+ return nativeEvent.getModifierState(keyArg);
43
+ }
44
+ var keyProp = modifierKeyToProp[keyArg.toLowerCase()];
45
+ return keyProp && nativeEvent[keyProp];
46
+}
47
+
48
function getEventModifierState(nativeEvent) {
35
- // IE8 does not implement getModifierState so we simply map it to the only
36
- // modifier keys exposed by the event itself, does not support Lock-keys.
37
- // Currently, all major browsers except Chrome seems to support Lock-keys.
38
- return nativeEvent.getModifierState || function(keyArg) {
39
- var keyProp = modifierKeyToProp[keyArg.toLowerCase()];
40
- return keyProp && nativeEvent[keyProp];
41
- };
49
+ return modifierStateGetter;
50
}
51
52
module.exports = getEventModifierState;