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..e94554d0b438d04a5c1e70c63a752a76589425c7 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,7 +252,8 @@ WebInspector.FilteredListWidget.prototype = { |
break; |
} |
} |
- this._viewportControl.invalidate(); |
+ this._elements = []; |
+ this._viewportControl.refresh(); |
if (!query) |
this._selectedIndexInFiltered = 0; |
this._updateSelection(this._selectedIndexInFiltered, false); |
@@ -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"); |
}, |
@@ -374,12 +378,12 @@ WebInspector.FilteredListWidget.prototype = { |
* @param {number} index |
* @return {number} |
*/ |
- fastHeight: function(index) |
+ fastItemHeight: function(index) |
{ |
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 |