Modified: trunk/Source/WebCore/ChangeLog (141978 => 141979)
--- trunk/Source/WebCore/ChangeLog 2013-02-06 09:54:56 UTC (rev 141978)
+++ trunk/Source/WebCore/ChangeLog 2013-02-06 10:11:54 UTC (rev 141979)
@@ -1,3 +1,18 @@
+2013-02-06 Pavel Feldman <pfeld...@chromium.org>
+
+ Web Inspector: file selector list jumps as I type or move Up/Down
+ https://bugs.webkit.org/show_bug.cgi?id=108933
+
+ Reviewed by Vsevolod Vlasov.
+
+ Missing return was scheduling extra updates.
+
+ * inspector/front-end/FilteredItemSelectionDialog.js:
+ (WebInspector.FilteredItemSelectionDialog):
+ (WebInspector.FilteredItemSelectionDialog.prototype._filterItems):
+ (WebInspector.FilteredItemSelectionDialog.prototype._onKeyDown):
+ (WebInspector.FilteredItemSelectionDialog.prototype._updateSelection):
+
2013-02-06 Kentaro Hara <hara...@chromium.org>
[V8] Pass an Isolate to remaining GetTemplate()s
Modified: trunk/Source/WebCore/inspector/front-end/FilteredItemSelectionDialog.js (141978 => 141979)
--- trunk/Source/WebCore/inspector/front-end/FilteredItemSelectionDialog.js 2013-02-06 09:54:56 UTC (rev 141978)
+++ trunk/Source/WebCore/inspector/front-end/FilteredItemSelectionDialog.js 2013-02-06 10:11:54 UTC (rev 141979)
@@ -60,7 +60,6 @@
this._itemElementsContainer = this._viewportControl.element;
this._itemElementsContainer.addStyleClass("container");
this._itemElementsContainer.addStyleClass("monospace");
- this._itemElementsContainer.addEventListener("mousemove", this._onMouseMove.bind(this), false);
this._itemElementsContainer.addEventListener("click", this._onClick.bind(this), false);
this.element.appendChild(this._itemElementsContainer);
@@ -113,8 +112,6 @@
onEnter: function()
{
- if (typeof this._selectedIndexInFiltered !== "number")
- return;
this._delegate.selectItem(this._filteredItems[this._selectedIndexInFiltered], this._promptElement.value.trim());
},
@@ -225,7 +222,7 @@
var camelCaseScoringRegex = query ? this._createScoringRegex(query, ignoreCase, true) : null;
var underscoreScoringRegex = query ? this._createScoringRegex(query, ignoreCase, false) : null;
- var oldSelectedAbsoluteIndex = this._filteredItems[this._selectedIndexInFiltered];
+ var oldSelectedAbsoluteIndex = this._selectedIndexInFiltered ? this._filteredItems[this._selectedIndexInFiltered] : null;
this._filteredItems = [];
this._selectedIndexInFiltered = 0;
@@ -286,45 +283,48 @@
}
}
this._viewportControl.refresh();
- this._updateSelection(this._selectedIndexInFiltered);
+ this._updateSelection(this._selectedIndexInFiltered, false);
},
_onKeyDown: function(event)
{
- if (typeof this._selectedIndexInFiltered === "number") {
- var newSelectedIndex = this._selectedIndexInFiltered;
+ var newSelectedIndex = this._selectedIndexInFiltered;
- function updateSelection(makeLast)
- {
- this._viewportControl.scrollItemIntoView(newSelectedIndex, makeLast);
- this._updateSelection(newSelectedIndex);
- event.consume(true);
- }
-
- switch (event.keyCode) {
- case WebInspector.KeyboardShortcut.Keys.Down.code:
- if (++newSelectedIndex >= this._filteredItems.length)
- newSelectedIndex = this._filteredItems.length - 1;
- updateSelection.call(this, true);
- break;
- case WebInspector.KeyboardShortcut.Keys.Up.code:
- if (--newSelectedIndex < 0)
- newSelectedIndex = 0;
- updateSelection.call(this, false);
- break;
- case WebInspector.KeyboardShortcut.Keys.PageDown.code:
- newSelectedIndex = Math.min(newSelectedIndex + this._viewportControl.rowsPerViewport(), this._filteredItems.length - 1);
- updateSelection.call(this, true);
- break;
- case WebInspector.KeyboardShortcut.Keys.PageUp.code:
- newSelectedIndex = Math.max(newSelectedIndex - this._viewportControl.rowsPerViewport(), 0);
- updateSelection.call(this, false);
- break;
- }
+ switch (event.keyCode) {
+ case WebInspector.KeyboardShortcut.Keys.Down.code:
+ if (++newSelectedIndex >= this._filteredItems.length)
+ newSelectedIndex = this._filteredItems.length - 1;
+ this._updateSelection(newSelectedIndex, true);
+ event.consume(true);
+ break;
+ case WebInspector.KeyboardShortcut.Keys.Up.code:
+ if (--newSelectedIndex < 0)
+ newSelectedIndex = 0;
+ this._updateSelection(newSelectedIndex, false);
+ event.consume(true);
+ break;
+ case WebInspector.KeyboardShortcut.Keys.PageDown.code:
+ newSelectedIndex = Math.min(newSelectedIndex + this._viewportControl.rowsPerViewport(), this._filteredItems.length - 1);
+ this._updateSelection(newSelectedIndex, true);
+ event.consume(true);
+ break;
+ case WebInspector.KeyboardShortcut.Keys.PageUp.code:
+ newSelectedIndex = Math.max(newSelectedIndex - this._viewportControl.rowsPerViewport(), 0);
+ this._updateSelection(newSelectedIndex, false);
+ event.consume(true);
+ break;
+ case WebInspector.KeyboardShortcut.Keys.Home.code:
+ this._updateSelection(0, false);
+ event.consume(true);
+ break;
+ case WebInspector.KeyboardShortcut.Keys.End.code:
+ this._updateSelection(this._filteredItems.length - 1, true);
+ event.consume(true);
+ break;
+ default:
+ if (event.keyIdentifier !== "Shift" && event.keyIdentifier !== "Ctrl" && event.keyIdentifier !== "Meta" && event.keyIdentifier !== "Left" && event.keyIdentifier !== "Right")
+ this._scheduleFilter();
}
-
- if (event.keyIdentifier !== "Shift" && event.keyIdentifier !== "Ctrl" && event.keyIdentifier !== "Meta" && event.keyIdentifier !== "Left" && event.keyIdentifier !== "Right")
- this._scheduleFilter();
},
_scheduleFilter: function()
@@ -336,18 +336,18 @@
/**
* @param {number} index
+ * @param {boolean} makeLast
*/
- _updateSelection: function(index)
+ _updateSelection: function(index, makeLast)
{
var element = this._viewportControl.renderedElementAt(this._selectedIndexInFiltered);
if (element)
element.removeStyleClass("selected");
+ this._viewportControl.scrollItemIntoView(index, makeLast);
this._selectedIndexInFiltered = index;
- element = this._viewportControl.renderedElementAt(index);
+ element = this._viewportControl.renderedElementAt(index);
if (element)
element.addStyleClass("selected");
- else
- this._viewportControl.refresh();
},
_onClick: function(event)
@@ -359,18 +359,6 @@
WebInspector.Dialog.hide();
},
- _onMouseMove: function(event)
- {
- if (event.pageX === this._lastMouseX && event.pageY === this._lastMouseY)
- return;
- this._lastMouseX = event.pageX;
- this._lastMouseY = event.pageY;
- var itemElement = event.target.enclosingNodeOrSelfWithClass("filtered-item-list-dialog-item");
- if (!itemElement)
- return;
- this._updateSelection(itemElement._filteredIndex);
- },
-
/**
* @return {number}
*/