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

Side by Side Diff: lib/keySelector.js

Issue 29332790: Issue 3421 - Get rid of for each loops in keySelector.js (Closed)
Patch Set: Created Dec. 16, 2015, 11:25 a.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 | no next file » | 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 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 keyModifiers = key.getAttribute("modifiers");
97 if (keyModifiers) 97 if (keyModifiers)
98 for each (let modifier in keyModifiers.toUpperCase().match(/\w+/g)) 98 for (let modifier of keyModifiers.toUpperCase().match(/\w+/g))
99 if (modifier in validModifiers) 99 if (modifier in validModifiers)
100 keyData[validModifiers[modifier]] = true; 100 keyData[validModifiers[modifier]] = true;
101 101
102 let canonical = [keyData.shift, keyData.meta, keyData.alt, keyData.control , keyData.char || keyData.code].join(" "); 102 let canonical = [keyData.shift, keyData.meta, keyData.alt, keyData.control , keyData.char || keyData.code].join(" ");
103 this._existingShortcuts[canonical] = true; 103 this._existingShortcuts[canonical] = true;
104 } 104 }
105 }, 105 },
106 106
107 /** 107 /**
108 * Selects a keyboard shortcut variant that isn't already taken, 108 * Selects a keyboard shortcut variant that isn't already taken,
109 * parses it into an object. 109 * parses it into an object.
110 */ 110 */
111 selectKey: function(/**String*/ variants) /**Object*/ 111 selectKey: function(/**String*/ variants) /**Object*/
112 { 112 {
113 for each (let variant in variants.split(/\s*,\s*/)) 113 for (let variant of variants.split(/\s*,\s*/))
114 { 114 {
115 if (!variant) 115 if (!variant)
116 continue; 116 continue;
117 117
118 let keyData = 118 let keyData =
119 { 119 {
120 shift: false, 120 shift: false,
121 meta: false, 121 meta: false,
122 alt: false, 122 alt: false,
123 control: false, 123 control: false,
124 char: null, 124 char: null,
125 code: null, 125 code: null,
126 codeName: null 126 codeName: null
127 }; 127 };
128 for each (let part in variant.toUpperCase().split(/\s+/)) 128 for (let part of variant.toUpperCase().split(/\s+/))
129 { 129 {
130 if (part in validModifiers) 130 if (part in validModifiers)
131 keyData[validModifiers[part]] = true; 131 keyData[validModifiers[part]] = true;
132 else if (part.length == 1) 132 else if (part.length == 1)
133 keyData.char = part; 133 keyData.char = part;
134 else if ("DOM_VK_" + part in Ci.nsIDOMKeyEvent) 134 else if ("DOM_VK_" + part in Ci.nsIDOMKeyEvent)
135 { 135 {
136 keyData.code = Ci.nsIDOMKeyEvent["DOM_VK_" + part]; 136 keyData.code = Ci.nsIDOMKeyEvent["DOM_VK_" + part];
137 keyData.codeName = "VK_" + part; 137 keyData.codeName = "VK_" + part;
138 } 138 }
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 return false; 206 return false;
207 if (key.meta != event.metaKey || key.control != event.ctrlKey) 207 if (key.meta != event.metaKey || key.control != event.ctrlKey)
208 return false; 208 return false;
209 209
210 if (key.char && event.charCode && String.fromCharCode(event.charCode).toUpperC ase() == key.char) 210 if (key.char && event.charCode && String.fromCharCode(event.charCode).toUpperC ase() == key.char)
211 return true; 211 return true;
212 if (key.code && event.keyCode && event.keyCode == key.code) 212 if (key.code && event.keyCode && event.keyCode == key.code)
213 return true; 213 return true;
214 return false; 214 return false;
215 }; 215 };
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld