diff options
Diffstat (limited to 'src/3rdparty/webkit/WebCore/inspector/front-end/CallStackSidebarPane.js')
-rw-r--r-- | src/3rdparty/webkit/WebCore/inspector/front-end/CallStackSidebarPane.js | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/3rdparty/webkit/WebCore/inspector/front-end/CallStackSidebarPane.js b/src/3rdparty/webkit/WebCore/inspector/front-end/CallStackSidebarPane.js index a2c8bedae2..c08cc7a63e 100644 --- a/src/3rdparty/webkit/WebCore/inspector/front-end/CallStackSidebarPane.js +++ b/src/3rdparty/webkit/WebCore/inspector/front-end/CallStackSidebarPane.js @@ -26,6 +26,16 @@ WebInspector.CallStackSidebarPane = function() { WebInspector.SidebarPane.call(this, WebInspector.UIString("Call Stack")); + + this._shortcuts = {}; + + var shortcut = WebInspector.KeyboardShortcut.makeKey(WebInspector.KeyboardShortcut.KeyCodes.Period, + WebInspector.KeyboardShortcut.Modifiers.Ctrl); + this._shortcuts[shortcut] = this._selectNextCallFrameOnStack.bind(this); + + var shortcut = WebInspector.KeyboardShortcut.makeKey(WebInspector.KeyboardShortcut.KeyCodes.Comma, + WebInspector.KeyboardShortcut.Modifiers.Ctrl); + this._shortcuts[shortcut] = this._selectPreviousCallFrameOnStack.bind(this); } WebInspector.CallStackSidebarPane.prototype = { @@ -100,6 +110,53 @@ WebInspector.CallStackSidebarPane.prototype = { this.dispatchEventToListeners("call frame selected"); }, + handleKeyEvent: function(event) + { + var shortcut = WebInspector.KeyboardShortcut.makeKeyFromEvent(event); + var handler = this._shortcuts[shortcut]; + if (handler) { + handler(event); + event.preventDefault(); + event.handled = true; + } + }, + + _selectNextCallFrameOnStack: function() + { + var index = this._selectedCallFrameIndex(); + if (index == -1) + return; + this._selectedPlacardByIndex(index + 1); + }, + + _selectPreviousCallFrameOnStack: function() + { + var index = this._selectedCallFrameIndex(); + if (index == -1) + return; + this._selectedPlacardByIndex(index - 1); + }, + + _selectedPlacardByIndex: function(index) + { + if (index < 0 || index >= this.placards.length) + return; + var placard = this.placards[index]; + this.selectedCallFrame = placard.callFrame + }, + + _selectedCallFrameIndex: function() + { + if (!this._selectedCallFrame) + return -1; + for (var i = 0; i < this.placards.length; ++i) { + var placard = this.placards[i]; + if (placard.callFrame === this._selectedCallFrame) + return i; + } + return -1; + }, + _placardSelected: function(event) { var placardElement = event.target.enclosingNodeOrSelfWithClass("placard"); |