| 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 cc801aa975cf869689da265a4dd44454e9cf4345..ceb66f6da7d0f15e396d4308efc719853a0cd2ca 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
|
| @@ -4,7 +4,6 @@
|
| * found in the LICENSE file.
|
| */
|
| /**
|
| - * @implements {UI.ViewportControl.Provider}
|
| * @unrestricted
|
| */
|
| UI.FilteredListWidget = class extends UI.VBox {
|
| @@ -33,8 +32,8 @@ UI.FilteredListWidget = class extends UI.VBox {
|
| promptProxy.classList.add('filtered-list-widget-prompt-element');
|
|
|
| this._filteredItems = [];
|
| - this._viewportControl = new UI.ViewportControl(this);
|
| - this._itemElementsContainer = this._viewportControl.element;
|
| + this._viewport = new UI.SimpleViewport(this._createItemElement.bind(this));
|
| + this._itemElementsContainer = this._viewport.element;
|
| this._itemElementsContainer.classList.add('container');
|
| this._itemElementsContainer.addEventListener('click', this._onClick.bind(this), false);
|
| this.contentElement.appendChild(this._itemElementsContainer);
|
| @@ -45,10 +44,6 @@ UI.FilteredListWidget = class extends UI.VBox {
|
| this._delegate.setRefreshCallback(this._itemsLoaded.bind(this));
|
| this._itemsLoaded();
|
| this._updateShowMatchingItems();
|
| - this._viewportControl.refresh();
|
| -
|
| - /** @typedef {!Array.<!Element>} */
|
| - this._elements = [];
|
| }
|
|
|
| /**
|
| @@ -126,6 +121,7 @@ UI.FilteredListWidget = class extends UI.VBox {
|
| * @return {!Element}
|
| */
|
| _createItemElement(index) {
|
| + index = this._filteredItems[index];
|
| var itemElement = createElement('div');
|
| itemElement.className = 'filtered-list-widget-item ' + (this._renderAsTwoRows ? 'two-rows' : 'one-row');
|
| itemElement._titleElement = itemElement.createChild('div', 'filtered-list-widget-title');
|
| @@ -238,11 +234,10 @@ UI.FilteredListWidget = class extends UI.VBox {
|
| break;
|
| }
|
| }
|
| - this._elements = [];
|
| - this._viewportControl.refresh();
|
| + this._viewport.refresh(this._filteredItems.length);
|
| if (!query)
|
| this._selectedIndexInFiltered = 0;
|
| - this._updateSelection(this._selectedIndexInFiltered, false);
|
| + this._updateSelection(this._selectedIndexInFiltered);
|
| this._itemsFilteredForTest();
|
| }
|
| }
|
| @@ -264,13 +259,6 @@ UI.FilteredListWidget = class extends UI.VBox {
|
| this._itemElementsContainer.classList.toggle('hidden', !shouldShowMatchingItems);
|
| }
|
|
|
| - /**
|
| - * @return {number}
|
| - */
|
| - _rowsPerViewport() {
|
| - return Math.floor(this._viewportControl.element.clientHeight / this._rowHeight);
|
| - }
|
| -
|
| _onKeyDown(event) {
|
| var newSelectedIndex = this._selectedIndexInFiltered;
|
|
|
| @@ -278,23 +266,24 @@ UI.FilteredListWidget = class extends UI.VBox {
|
| case UI.KeyboardShortcut.Keys.Down.code:
|
| if (++newSelectedIndex >= this._filteredItems.length)
|
| newSelectedIndex = 0;
|
| - this._updateSelection(newSelectedIndex, true);
|
| + this._updateSelection(newSelectedIndex);
|
| event.consume(true);
|
| break;
|
| case UI.KeyboardShortcut.Keys.Up.code:
|
| if (--newSelectedIndex < 0)
|
| newSelectedIndex = this._filteredItems.length - 1;
|
| - this._updateSelection(newSelectedIndex, false);
|
| + this._updateSelection(newSelectedIndex);
|
| event.consume(true);
|
| break;
|
| case UI.KeyboardShortcut.Keys.PageDown.code:
|
| - newSelectedIndex = Math.min(newSelectedIndex + this._rowsPerViewport(), this._filteredItems.length - 1);
|
| - this._updateSelection(newSelectedIndex, true);
|
| + newSelectedIndex =
|
| + Math.min(newSelectedIndex + this._viewport.elementsPerViewport(), this._filteredItems.length - 1);
|
| + this._updateSelection(newSelectedIndex);
|
| event.consume(true);
|
| break;
|
| case UI.KeyboardShortcut.Keys.PageUp.code:
|
| - newSelectedIndex = Math.max(newSelectedIndex - this._rowsPerViewport(), 0);
|
| - this._updateSelection(newSelectedIndex, false);
|
| + newSelectedIndex = Math.max(newSelectedIndex - this._viewport.elementsPerViewport(), 0);
|
| + this._updateSelection(newSelectedIndex);
|
| event.consume(true);
|
| break;
|
| case UI.KeyboardShortcut.Keys.Enter.code:
|
| @@ -315,16 +304,15 @@ UI.FilteredListWidget = class extends UI.VBox {
|
|
|
| /**
|
| * @param {number} index
|
| - * @param {boolean} makeLast
|
| */
|
| - _updateSelection(index, makeLast) {
|
| + _updateSelection(index) {
|
| if (!this._filteredItems.length)
|
| return;
|
| if (this._selectedElement)
|
| this._selectedElement.classList.remove('selected');
|
| - this._viewportControl.scrollItemIntoView(index, makeLast);
|
| + this._viewport.scrollItemIntoView(index);
|
| this._selectedIndexInFiltered = index;
|
| - this._selectedElement = this._elements[index];
|
| + this._selectedElement = this._viewport.elementAtIndex(index);
|
| if (this._selectedElement)
|
| this._selectedElement.classList.add('selected');
|
| }
|
| @@ -339,39 +327,6 @@ UI.FilteredListWidget = class extends UI.VBox {
|
| this._dialog.detach();
|
| this._delegate.selectItemWithQuery(itemElement._index, this._value());
|
| }
|
| -
|
| - /**
|
| - * @override
|
| - * @return {number}
|
| - */
|
| - itemCount() {
|
| - return this._filteredItems.length;
|
| - }
|
| -
|
| - /**
|
| - * @override
|
| - * @param {number} index
|
| - * @return {number}
|
| - */
|
| - fastItemHeight(index) {
|
| - if (!this._rowHeight) {
|
| - var delegateIndex = this._filteredItems[index];
|
| - var element = this._createItemElement(delegateIndex);
|
| - this._rowHeight = UI.measurePreferredSize(element, this._itemElementsContainer).height;
|
| - }
|
| - return this._rowHeight;
|
| - }
|
| -
|
| - /**
|
| - * @override
|
| - * @param {number} index
|
| - * @return {!Element}
|
| - */
|
| - itemElement(index) {
|
| - if (!this._elements[index])
|
| - this._elements[index] = this._createItemElement(this._filteredItems[index]);
|
| - return this._elements[index];
|
| - }
|
| };
|
|
|
|
|
|
|