Chromium Code Reviews| 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; |
|
lushnikov
2016/10/01 01:16:54
technically, you can make this._viewportControl.te
|
| } |
| 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 |