| Index: lib/keySelector.js |
| =================================================================== |
| --- a/lib/keySelector.js |
| +++ b/lib/keySelector.js |
| @@ -88,49 +88,63 @@ KeySelector.prototype = |
| let keyCode = key.getAttribute("keycode"); |
| if (keyCode && "DOM_" + keyCode.toUpperCase() in Ci.nsIDOMKeyEvent) |
| keyData.code = Ci.nsIDOMKeyEvent["DOM_" + keyCode.toUpperCase()]; |
| if (!keyData.char && !keyData.code) |
| continue; |
| - let keyModifiers = key.getAttribute("modifiers"); |
| - if (keyModifiers) |
| - for each (let modifier in keyModifiers.toUpperCase().match(/\w+/g)) |
| + let modifiers = key.getAttribute("modifiers"); |
| + modifiers = modifiers ? modifiers.toUpperCase().match(/\w+/g) : null; |
|
Wladimir Palant
2014/11/17 20:05:17
If you are doing it this way, why not use [] inste
|
| + if (modifiers) |
| + { |
| + for (let modifier of modifiers) |
| + { |
| if (modifier in validModifiers) |
| keyData[validModifiers[modifier]] = true; |
| + } |
| + } |
| let canonical = [keyData.shift, keyData.meta, keyData.alt, keyData.control, keyData.char || keyData.code].join(" "); |
| this._existingShortcuts[canonical] = true; |
| } |
| }, |
| /** |
| * Selects a keyboard shortcut variant that isn't already taken, |
| * parses it into an object. |
| */ |
| selectKey: function(/**String*/ variants) /**Object*/ |
| { |
| - for each (let variant in variants.split(/\s*,\s*/)) |
| + variants = variants.split(/\s*,\s*/); |
| + if (!variants) |
|
Wladimir Palant
2014/11/17 20:05:17
This condition can never be true - String.split()
|
| + return null; |
| + |
| + for (let variant of variants) |
| { |
| if (!variant) |
| continue; |
| let keyData = |
| { |
| shift: false, |
| meta: false, |
| alt: false, |
| control: false, |
| char: null, |
| code: null, |
| codeName: null |
| }; |
| - for each (let part in variant.toUpperCase().split(/\s+/)) |
| + |
| + variant = variant.toUpperCase().split(/\s+/); |
| + if (!variant) |
|
Wladimir Palant
2014/11/17 20:05:17
Same here, this if block is pointless.
|
| + continue; |
| + |
| + for (let part of variant) |
| { |
| if (part in validModifiers) |
| keyData[validModifiers[part]] = true; |
| else if (part.length == 1) |
| keyData.char = part; |
| else if ("DOM_VK_" + part in Ci.nsIDOMKeyEvent) |
| { |
| keyData.code = Ci.nsIDOMKeyEvent["DOM_VK_" + part]; |