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

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

Issue 2371393002: DevTools: Add lightweight StaticViewportControl (Closed)
Patch Set: _indexSymbol Created 4 years, 2 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
« no previous file with comments | « third_party/WebKit/Source/devtools/front_end/ui/module.json ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « third_party/WebKit/Source/devtools/front_end/ui/module.json ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698