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

Side by Side Diff: lib/keySelector.js

Issue 29361133: Issue 4544 - Consider platformHTMLBindings.xml when detecting available keyboard shortcuts (Closed) Base URL: https://hg.adblockplus.org/buildtools
Patch Set: Created Oct. 31, 2016, 10:02 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 | packagerGecko.py » ('j') | templates/bootstrap.js.tmpl » ('J')
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 = Object.create(null); 7 let validModifiers = Object.create(null);
8 validModifiers.ACCEL = null; 8 validModifiers.ACCEL = null;
9 validModifiers.CTRL = "control"; 9 validModifiers.CTRL = "control";
10 validModifiers.CONTROL = "control"; 10 validModifiers.CONTROL = "control";
11 validModifiers.SHIFT = "shift"; 11 validModifiers.SHIFT = "shift";
12 validModifiers.ALT = "alt"; 12 validModifiers.ALT = "alt";
13 validModifiers.META = "meta"; 13 validModifiers.META = "meta";
14 14
15 let bindingsKeys = null;
16 (function()
17 {
18 let request = new XMLHttpRequest();
19 request.open("GET", "chrome://global/content/platformHTMLBindings.xml");
20 request.addEventListener("load", () =>
21 {
22 bindingsKeys = request.responseXML.getElementsByTagName("handler");
23 });
24 request.send();
25 })();
26
27
15 /** 28 /**
16 * Sets the correct value of validModifiers.ACCEL. 29 * Sets the correct value of validModifiers.ACCEL.
17 */ 30 */
18 function initAccelKey() 31 function initAccelKey()
19 { 32 {
20 validModifiers.ACCEL = "control"; 33 validModifiers.ACCEL = "control";
21 try 34 try
22 { 35 {
23 let accelKey = Services.prefs.getIntPref("ui.key.accelKey"); 36 let accelKey = Services.prefs.getIntPref("ui.key.accelKey");
24 if (accelKey == Ci.nsIDOMKeyEvent.DOM_VK_CONTROL) 37 if (accelKey == Ci.nsIDOMKeyEvent.DOM_VK_CONTROL)
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 /** 71 /**
59 * Sets up _existingShortcuts property for a window. 72 * Sets up _existingShortcuts property for a window.
60 */ 73 */
61 _initExistingShortcuts: function(/**ChromeWindow*/ window) 74 _initExistingShortcuts: function(/**ChromeWindow*/ window)
62 { 75 {
63 if (!validModifiers.ACCEL) 76 if (!validModifiers.ACCEL)
64 initAccelKey(); 77 initAccelKey();
65 78
66 this._existingShortcuts = Object.create(null); 79 this._existingShortcuts = Object.create(null);
67 80
68 let keys = window.document.getElementsByTagName("key"); 81 let keys = Array.prototype.slice.apply(window.document.getElementsByTagName( "key"));
82 if (bindingsKeys)
83 keys.push.apply(keys, bindingsKeys);
69 for (let i = 0; i < keys.length; i++) 84 for (let i = 0; i < keys.length; i++)
70 { 85 {
71 let key = keys[i]; 86 let key = keys[i];
72 let keyData = 87 let keyData =
73 { 88 {
74 shift: false, 89 shift: false,
75 meta: false, 90 meta: false,
76 alt: false, 91 alt: false,
77 control: false, 92 control: false,
78 char: null, 93 char: null,
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 return false; 218 return false;
204 if (key.meta != event.metaKey || key.control != event.ctrlKey) 219 if (key.meta != event.metaKey || key.control != event.ctrlKey)
205 return false; 220 return false;
206 221
207 if (key.char && event.charCode && String.fromCharCode(event.charCode).toUpperC ase() == key.char) 222 if (key.char && event.charCode && String.fromCharCode(event.charCode).toUpperC ase() == key.char)
208 return true; 223 return true;
209 if (key.code && event.keyCode && event.keyCode == key.code) 224 if (key.code && event.keyCode && event.keyCode == key.code)
210 return true; 225 return true;
211 return false; 226 return false;
212 }; 227 };
OLDNEW
« no previous file with comments | « no previous file | packagerGecko.py » ('j') | templates/bootstrap.js.tmpl » ('J')

Powered by Google App Engine
This is Rietveld