Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: lib/keySelector.js

Issue 5695444839563264: Issue 1434 - Remove some non-standard JS usage from buildtools. (Closed)
Patch Set: Created Sept. 24, 2014, 1:31 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | lib/prefs.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* This Source Code Form is subject to the terms of the Mozilla Public 1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this 2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4 4
5 Cu.import("resource://gre/modules/Services.jsm"); 5 Cu.import("resource://gre/modules/Services.jsm");
6 6
7 let validModifiers = 7 let validModifiers =
8 { 8 {
9 ACCEL: null, 9 ACCEL: null,
10 CTRL: "control", 10 CTRL: "control",
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 if (keyChar && keyChar.length == 1) 86 if (keyChar && keyChar.length == 1)
87 keyData.char = keyChar.toUpperCase(); 87 keyData.char = keyChar.toUpperCase();
88 88
89 let keyCode = key.getAttribute("keycode"); 89 let keyCode = key.getAttribute("keycode");
90 if (keyCode && "DOM_" + keyCode.toUpperCase() in Ci.nsIDOMKeyEvent) 90 if (keyCode && "DOM_" + keyCode.toUpperCase() in Ci.nsIDOMKeyEvent)
91 keyData.code = Ci.nsIDOMKeyEvent["DOM_" + keyCode.toUpperCase()]; 91 keyData.code = Ci.nsIDOMKeyEvent["DOM_" + keyCode.toUpperCase()];
92 92
93 if (!keyData.char && !keyData.code) 93 if (!keyData.char && !keyData.code)
94 continue; 94 continue;
95 95
96 let keyModifiers = key.getAttribute("modifiers"); 96 let modifiers = key.getAttribute("modifiers");
97 if (keyModifiers) 97 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
98 for each (let modifier in keyModifiers.toUpperCase().match(/\w+/g)) 98 if (modifiers)
99 {
100 for (let modifier of modifiers)
101 {
99 if (modifier in validModifiers) 102 if (modifier in validModifiers)
100 keyData[validModifiers[modifier]] = true; 103 keyData[validModifiers[modifier]] = true;
104 }
105 }
101 106
102 let canonical = [keyData.shift, keyData.meta, keyData.alt, keyData.control , keyData.char || keyData.code].join(" "); 107 let canonical = [keyData.shift, keyData.meta, keyData.alt, keyData.control , keyData.char || keyData.code].join(" ");
103 this._existingShortcuts[canonical] = true; 108 this._existingShortcuts[canonical] = true;
104 } 109 }
105 }, 110 },
106 111
107 /** 112 /**
108 * Selects a keyboard shortcut variant that isn't already taken, 113 * Selects a keyboard shortcut variant that isn't already taken,
109 * parses it into an object. 114 * parses it into an object.
110 */ 115 */
111 selectKey: function(/**String*/ variants) /**Object*/ 116 selectKey: function(/**String*/ variants) /**Object*/
112 { 117 {
113 for each (let variant in variants.split(/\s*,\s*/)) 118 variants = variants.split(/\s*,\s*/);
119 if (!variants)
Wladimir Palant 2014/11/17 20:05:17 This condition can never be true - String.split()
120 return null;
121
122 for (let variant of variants)
114 { 123 {
115 if (!variant) 124 if (!variant)
116 continue; 125 continue;
117 126
118 let keyData = 127 let keyData =
119 { 128 {
120 shift: false, 129 shift: false,
121 meta: false, 130 meta: false,
122 alt: false, 131 alt: false,
123 control: false, 132 control: false,
124 char: null, 133 char: null,
125 code: null, 134 code: null,
126 codeName: null 135 codeName: null
127 }; 136 };
128 for each (let part in variant.toUpperCase().split(/\s+/)) 137
138 variant = variant.toUpperCase().split(/\s+/);
139 if (!variant)
Wladimir Palant 2014/11/17 20:05:17 Same here, this if block is pointless.
140 continue;
141
142 for (let part of variant)
129 { 143 {
130 if (part in validModifiers) 144 if (part in validModifiers)
131 keyData[validModifiers[part]] = true; 145 keyData[validModifiers[part]] = true;
132 else if (part.length == 1) 146 else if (part.length == 1)
133 keyData.char = part; 147 keyData.char = part;
134 else if ("DOM_VK_" + part in Ci.nsIDOMKeyEvent) 148 else if ("DOM_VK_" + part in Ci.nsIDOMKeyEvent)
135 { 149 {
136 keyData.code = Ci.nsIDOMKeyEvent["DOM_VK_" + part]; 150 keyData.code = Ci.nsIDOMKeyEvent["DOM_VK_" + part];
137 keyData.codeName = "VK_" + part; 151 keyData.codeName = "VK_" + part;
138 } 152 }
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 return false; 220 return false;
207 if (key.meta != event.metaKey || key.control != event.ctrlKey) 221 if (key.meta != event.metaKey || key.control != event.ctrlKey)
208 return false; 222 return false;
209 223
210 if (key.char && event.charCode && String.fromCharCode(event.charCode).toUpperC ase() == key.char) 224 if (key.char && event.charCode && String.fromCharCode(event.charCode).toUpperC ase() == key.char)
211 return true; 225 return true;
212 if (key.code && event.keyCode && event.keyCode == key.code) 226 if (key.code && event.keyCode && event.keyCode == key.code)
213 return true; 227 return true;
214 return false; 228 return false;
215 }; 229 };
OLDNEW
« no previous file with comments | « no previous file | lib/prefs.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld