| Index: Source/devtools/front_end/FilteredItemSelectionDialog.js
|
| diff --git a/Source/devtools/front_end/FilteredItemSelectionDialog.js b/Source/devtools/front_end/FilteredItemSelectionDialog.js
|
| index 0fedcc9f82206b8fe28aa09909c819308303b77f..6a9274a1446f46ca1c9cfcdee40061455369c518 100644
|
| --- a/Source/devtools/front_end/FilteredItemSelectionDialog.js
|
| +++ b/Source/devtools/front_end/FilteredItemSelectionDialog.js
|
| @@ -118,7 +118,8 @@ WebInspector.FilteredItemSelectionDialog.prototype = {
|
| {
|
| if (!this._delegate.itemCount())
|
| return;
|
| - this._delegate.selectItem(this._filteredItems[this._selectedIndexInFiltered], this._promptElement.value.trim());
|
| + var selectedIndex = this._selectedIndexInFiltered < this._filteredItems.length ? this._filteredItems[this._selectedIndexInFiltered] : null;
|
| + this._delegate.selectItem(selectedIndex, this._promptElement.value.trim());
|
| },
|
|
|
| _itemsLoaded: function()
|
| @@ -456,7 +457,7 @@ WebInspector.SelectionDialogContentProvider.prototype = {
|
| },
|
|
|
| /**
|
| - * @param {number} itemIndex
|
| + * @param {?number} itemIndex
|
| * @param {string} promptValue
|
| */
|
| selectItem: function(itemIndex, promptValue)
|
| @@ -580,11 +581,13 @@ WebInspector.JavaScriptOutlineDialog.prototype = {
|
| },
|
|
|
| /**
|
| - * @param {number} itemIndex
|
| + * @param {?number} itemIndex
|
| * @param {string} promptValue
|
| */
|
| selectItem: function(itemIndex, promptValue)
|
| {
|
| + if (itemIndex === null)
|
| + return;
|
| var lineNumber = this._functionItems[itemIndex].line;
|
| if (!isNaN(lineNumber) && lineNumber >= 0)
|
| this._selectItemCallback(lineNumber, this._functionItems[itemIndex].column);
|
| @@ -624,8 +627,9 @@ WebInspector.SelectUISourceCodeDialog.prototype = {
|
| /**
|
| * @param {?WebInspector.UISourceCode} uiSourceCode
|
| * @param {number=} lineNumber
|
| + * @param {number=} columnNumber
|
| */
|
| - uiSourceCodeSelected: function(uiSourceCode, lineNumber)
|
| + uiSourceCodeSelected: function(uiSourceCode, lineNumber, columnNumber)
|
| {
|
| // Overridden by subclasses
|
| },
|
| @@ -689,7 +693,7 @@ WebInspector.SelectUISourceCodeDialog.prototype = {
|
| {
|
| query = this.rewriteQuery(query);
|
| var uiSourceCode = this._uiSourceCodes[itemIndex];
|
| - titleElement.textContent = uiSourceCode.displayName() + (this._queryLineNumber ? this._queryLineNumber : "");
|
| + titleElement.textContent = uiSourceCode.displayName() + (this._queryLineNumberAndColumnNumber || "");
|
| subtitleElement.textContent = uiSourceCode.fullDisplayName().trimEnd(100);
|
|
|
| var indexes = [];
|
| @@ -708,20 +712,23 @@ WebInspector.SelectUISourceCodeDialog.prototype = {
|
| },
|
|
|
| /**
|
| - * @param {number} itemIndex
|
| + * @param {?number} itemIndex
|
| * @param {string} promptValue
|
| */
|
| selectItem: function(itemIndex, promptValue)
|
| {
|
| - if (/^:\d+$/.test(promptValue.trimRight())) {
|
| - var lineNumber = parseInt(promptValue.trimRight().substring(1), 10) - 1;
|
| - if (!isNaN(lineNumber) && lineNumber >= 0)
|
| - this.uiSourceCodeSelected(null, lineNumber);
|
| + var parsedExpression = promptValue.trim().match(/^([^:]*)(:\d+)?(:\d+)?$/);
|
| + if (!parsedExpression)
|
| return;
|
| - }
|
| - var lineNumberMatch = promptValue.match(/[^:]+\:([\d]*)$/);
|
| - var lineNumber = lineNumberMatch ? Math.max(parseInt(lineNumberMatch[1], 10) - 1, 0) : undefined;
|
| - this.uiSourceCodeSelected(this._uiSourceCodes[itemIndex], lineNumber);
|
| +
|
| + var lineNumber;
|
| + var columnNumber;
|
| + if (parsedExpression[2])
|
| + lineNumber = parseInt(parsedExpression[2].substr(1), 10) - 1;
|
| + if (parsedExpression[3])
|
| + columnNumber = parseInt(parsedExpression[3].substr(1), 10) - 1;
|
| + var uiSourceCode = itemIndex !== null ? this._uiSourceCodes[itemIndex] : null;
|
| + this.uiSourceCodeSelected(uiSourceCode, lineNumber, columnNumber);
|
| },
|
|
|
| /**
|
| @@ -733,8 +740,8 @@ WebInspector.SelectUISourceCodeDialog.prototype = {
|
| if (!query)
|
| return query;
|
| query = query.trim();
|
| - var lineNumberMatch = query.match(/([^:]+)(\:[\d]*)$/);
|
| - this._queryLineNumber = lineNumberMatch ? lineNumberMatch[2] : "";
|
| + var lineNumberMatch = query.match(/^([^:]+)((?::[^:]*){0,2})$/);
|
| + this._queryLineNumberAndColumnNumber = lineNumberMatch ? lineNumberMatch[2] : "";
|
| return lineNumberMatch ? lineNumberMatch[1] : query;
|
| },
|
|
|
| @@ -775,14 +782,15 @@ WebInspector.OpenResourceDialog.prototype = {
|
| /**
|
| * @param {?WebInspector.UISourceCode} uiSourceCode
|
| * @param {number=} lineNumber
|
| + * @param {number=} columnNumber
|
| */
|
| - uiSourceCodeSelected: function(uiSourceCode, lineNumber)
|
| + uiSourceCodeSelected: function(uiSourceCode, lineNumber, columnNumber)
|
| {
|
| if (!uiSourceCode)
|
| uiSourceCode = this._panel.currentUISourceCode();
|
| if (!uiSourceCode)
|
| return;
|
| - this._panel.showUISourceCode(uiSourceCode, lineNumber);
|
| + this._panel.showUISourceCode(uiSourceCode, lineNumber, columnNumber);
|
| },
|
|
|
| /**
|
| @@ -841,8 +849,9 @@ WebInspector.SelectUISourceCodeForProjectTypeDialog.prototype = {
|
| /**
|
| * @param {!WebInspector.UISourceCode} uiSourceCode
|
| * @param {number=} lineNumber
|
| + * @param {number=} columnNumber
|
| */
|
| - uiSourceCodeSelected: function(uiSourceCode, lineNumber)
|
| + uiSourceCodeSelected: function(uiSourceCode, lineNumber, columnNumber)
|
| {
|
| this._callback(uiSourceCode);
|
| },
|
|
|