Index: third_party/WebKit/Source/devtools/front_end/ui_lazy/FilteredListWidget.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/ui_lazy/FilteredListWidget.js b/third_party/WebKit/Source/devtools/front_end/ui_lazy/FilteredListWidget.js |
index 9fcec9a5ff7cae8b66fd405141e6e665700340ae..0bfe0f8ebc38d5a87e471926935fce1ab93cfee3 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/ui_lazy/FilteredListWidget.js |
+++ b/third_party/WebKit/Source/devtools/front_end/ui_lazy/FilteredListWidget.js |
@@ -7,7 +7,7 @@ |
/** |
* @constructor |
* @extends {WebInspector.VBox} |
- * @implements {WebInspector.ViewportControl.Provider} |
+ * @implements {WebInspector.StaticViewportControl.Provider} |
* @param {!WebInspector.FilteredListWidget.Delegate} delegate |
*/ |
WebInspector.FilteredListWidget = function(delegate) |
@@ -33,7 +33,7 @@ WebInspector.FilteredListWidget = function(delegate) |
promptProxy.classList.add("filtered-list-widget-prompt-element"); |
this._filteredItems = []; |
- this._viewportControl = new WebInspector.ViewportControl(this); |
+ this._viewportControl = new WebInspector.StaticViewportControl(this); |
this._itemElementsContainer = this._viewportControl.element; |
this._itemElementsContainer.classList.add("container"); |
this._itemElementsContainer.addEventListener("click", this._onClick.bind(this), false); |
@@ -47,6 +47,9 @@ WebInspector.FilteredListWidget = function(delegate) |
this._updateShowMatchingItems(); |
this._viewportControl.refresh(); |
this._prompt.autoCompleteSoon(true); |
+ |
+ /** @typedef {!Array.<!Element>} */ |
+ this._elements = []; |
} |
/** |
@@ -249,6 +252,7 @@ WebInspector.FilteredListWidget.prototype = { |
break; |
} |
} |
+ this._elements = []; |
this._viewportControl.invalidate(); |
if (!query) |
this._selectedIndexInFiltered = 0; |
@@ -343,7 +347,7 @@ WebInspector.FilteredListWidget.prototype = { |
this._selectedElement.classList.remove("selected"); |
this._viewportControl.scrollItemIntoView(index, makeLast); |
this._selectedIndexInFiltered = index; |
- this._selectedElement = this._viewportControl.renderedElementAt(index); |
+ this._selectedElement = this._elements[index]; |
if (this._selectedElement) |
this._selectedElement.classList.add("selected"); |
}, |
@@ -379,7 +383,7 @@ WebInspector.FilteredListWidget.prototype = { |
if (!this._rowHeight) { |
var delegateIndex = this._filteredItems[index]; |
var element = this._createItemElement(delegateIndex); |
- this._rowHeight = WebInspector.measurePreferredSize(element, this._viewportControl.contentElement()).height; |
+ this._rowHeight = WebInspector.measurePreferredSize(element, this._itemElementsContainer).height; |
} |
return this._rowHeight; |
}, |
@@ -387,22 +391,13 @@ WebInspector.FilteredListWidget.prototype = { |
/** |
* @override |
* @param {number} index |
- * @return {!WebInspector.ViewportElement} |
+ * @return {!Element} |
*/ |
itemElement: function(index) |
{ |
- var delegateIndex = this._filteredItems[index]; |
- var element = this._createItemElement(delegateIndex); |
- return new WebInspector.StaticViewportElement(element); |
- }, |
- |
- /** |
- * @override |
- * @return {number} |
- */ |
- minimumRowHeight: function() |
- { |
- return this.fastHeight(0); |
+ if (!this._elements[index]) |
+ this._elements[index] = this._createItemElement(this._filteredItems[index]); |
+ return this._elements[index]; |
}, |
__proto__: WebInspector.VBox.prototype |