Chromium Code Reviews| Index: Source/devtools/front_end/KeyboardShortcut.js |
| diff --git a/Source/devtools/front_end/KeyboardShortcut.js b/Source/devtools/front_end/KeyboardShortcut.js |
| index d76471f1540b278e8a1f654152d6d72bd61d6b2f..337884671c4b956b891272e217424633981a11ae 100644 |
| --- a/Source/devtools/front_end/KeyboardShortcut.js |
| +++ b/Source/devtools/front_end/KeyboardShortcut.js |
| @@ -282,29 +282,35 @@ WebInspector.KeyboardShortcut._modifiersToString = function(modifiers) |
| WebInspector.KeyboardShortcut.handleShortcut = function(event) |
| { |
| var key = WebInspector.KeyboardShortcut.makeKeyFromEvent(event); |
| - var extensions = WebInspector.KeyboardShortcut._keysToActionExtensions[key]; |
| + var extensions = WebInspector.KeyboardShortcut._keyToAction[key]; |
| if (!extensions) |
| return; |
| - function handler(extension) |
| - { |
| - var result = extension.instance().handleAction(event); |
| - if (result) |
| - event.consume(true); |
| - delete WebInspector.KeyboardShortcut._pendingActionTimer; |
| - return result; |
| - } |
| - |
| + extensions = WebInspector.context.applicableExtensions(extensions).items(); |
|
pfeldman
2014/04/17 10:40:25
Lets cache them?
apavlov
2014/04/17 12:42:22
Since the context is dynamic, we should always sel
|
| for (var i = 0; i < extensions.length; ++i) { |
| + var extension = extensions[i]; |
| var ident = event.keyIdentifier; |
| if (/^F\d+|Control|Shift|Alt|Meta|Win|U\+001B$/.test(ident) || event.ctrlKey || event.altKey || event.metaKey) { |
| - if (handler(extensions[i])) |
| + if (handler(extension)) |
| return; |
| } else { |
| - WebInspector.KeyboardShortcut._pendingActionTimer = setTimeout(handler.bind(null, extensions[i]), 0); |
| + WebInspector.KeyboardShortcut._pendingActionTimer = setTimeout(handler.bind(null, extension), 0); |
| break; |
| } |
| } |
| + |
| + /** |
| + * @param {!WebInspector.ModuleManager.Extension} extension |
| + * @return {boolean} |
| + */ |
| + function handler(extension) |
| + { |
| + var result = WebInspector.actionRegistry.execute(extension.descriptor()["actionId"], event); |
| + if (result) |
| + event.consume(true); |
| + delete WebInspector.KeyboardShortcut._pendingActionTimer; |
| + return result; |
| + } |
| } |
| WebInspector.KeyboardShortcut.SelectAll = WebInspector.KeyboardShortcut.makeKey("a", WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta); |
| @@ -321,19 +327,19 @@ WebInspector.KeyboardShortcut._onKeyPress = function(event) |
| } |
| } |
| -WebInspector.KeyboardShortcut.registerActions = function() |
| +WebInspector.KeyboardShortcut.registerBindings = function() |
| { |
| document.addEventListener("keypress", WebInspector.KeyboardShortcut._onKeyPress, true); |
| - WebInspector.KeyboardShortcut._keysToActionExtensions = {}; |
| + WebInspector.KeyboardShortcut._keyToAction = {}; |
| var extensions = WebInspector.moduleManager.extensions(WebInspector.ActionDelegate); |
| - extensions.forEach(registerBindings); |
| + extensions.forEach(registerExtension); |
| /** |
| * @param {!WebInspector.ModuleManager.Extension} extension |
| */ |
| - function registerBindings(extension) |
| + function registerExtension(extension) |
| { |
| - var bindings = extension.descriptor().bindings; |
| + var bindings = extension.descriptor()["bindings"]; |
| for (var i = 0; bindings && i < bindings.length; ++i) { |
| if (!platformMatches(bindings[i].platform)) |
| continue; |
| @@ -344,17 +350,16 @@ WebInspector.KeyboardShortcut.registerActions = function() |
| /** |
| * @param {!WebInspector.ModuleManager.Extension} extension |
| - * @param {string} shortcut |
| */ |
| function registerShortcut(extension, shortcut) |
| { |
| var key = WebInspector.KeyboardShortcut.makeKeyFromBindingShortcut(shortcut); |
| if (!key) |
| return; |
| - if (WebInspector.KeyboardShortcut._keysToActionExtensions[key]) |
| - WebInspector.KeyboardShortcut._keysToActionExtensions[key].push(extension); |
| + if (WebInspector.KeyboardShortcut._keyToAction[key]) |
| + WebInspector.KeyboardShortcut._keyToAction[key].push(extension); |
| else |
| - WebInspector.KeyboardShortcut._keysToActionExtensions[key] = [extension]; |
| + WebInspector.KeyboardShortcut._keyToAction[key] = [extension]; |
| } |
| /** |