Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(911)

Unified Diff: third_party/WebKit/Source/devtools/front_end/ui_lazy/FilteredListWidget.js

Issue 2371393002: DevTools: Add lightweight StaticViewportControl (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698