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

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

Issue 2609363002: [DevTools] Tweak ListControl API. (Closed)
Patch Set: Created 3 years, 12 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 e55d2d8e3bed3806dfac20e08e00370515ad27cc..b1144999c20efd3a17d77f3aab050d47109f2e63 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
@@ -36,10 +36,9 @@ UI.FilteredListWidget = class extends UI.VBox {
this._progressBarElement = this._progressElement.createChild('div', 'filtered-list-widget-progress-bar');
/** @type {!UI.ListControl<number>} */
- this._list = new UI.ListControl(this, UI.ListMode.ViewportFixedItemsMeasured);
+ this._list = new UI.ListControl(this, UI.ListMode.SameHeightItems);
this._itemElementsContainer = this._list.element;
this._itemElementsContainer.classList.add('container');
- this._itemElementsContainer.addEventListener('click', this._onClick.bind(this), false);
this.contentElement.appendChild(this._itemElementsContainer);
this.setDefaultFocusedElement(this._promptElement);
@@ -87,7 +86,7 @@ UI.FilteredListWidget = class extends UI.VBox {
* @override
*/
wasShown() {
- this._list.fixedHeightChanged();
+ this._list.invalidateSameHeight();
}
/**
@@ -146,6 +145,7 @@ UI.FilteredListWidget = class extends UI.VBox {
* @return {number}
*/
heightForItem(item) {
+ // Let the list measure items for us.
return 0;
}
@@ -173,6 +173,20 @@ UI.FilteredListWidget = class extends UI.VBox {
}
/**
+ * @override
+ * @param {number} item
+ * @param {!Element} element
+ * @param {!Event} event
+ */
+ itemElementClicked(item, element, event) {
pfeldman 2017/01/04 02:07:50 Can we rely upon event bubbling here?
+ event.consume(true);
+ // Detach dialog before allowing delegate to override focus.
+ if (this._dialog)
+ this._dialog.detach();
+ this._delegate.selectItemWithQuery(item, this._value());
+ }
+
+ /**
* @param {string} query
*/
setQuery(query) {
@@ -291,7 +305,7 @@ UI.FilteredListWidget = class extends UI.VBox {
filteredItems = [].concat(bestItems, overflowItems, filteredItems);
this._list.replaceAllItems(filteredItems);
if (filteredItems.length)
- this._list.selectItemAtIndex(0, true);
+ this._list.selectItem(filteredItems[0]);
this._itemsFilteredForTest();
}
@@ -316,20 +330,29 @@ UI.FilteredListWidget = class extends UI.VBox {
* @param {!Event} event
*/
_onKeyDown(event) {
- if (this._list.onKeyDown(event)) {
- event.consume(true);
- return;
- }
-
- switch (event.keyCode) {
- case UI.KeyboardShortcut.Keys.Enter.code:
+ var handled = false;
+ switch (event.key) {
+ case 'Enter':
this._onEnter(event);
- break;
- case UI.KeyboardShortcut.Keys.Tab.code:
+ return;
+ case 'Tab':
this._tabKeyPressed();
+ return;
+ case 'ArrowUp':
+ handled = this._list.selectPreviousItem(true, false);
+ break;
+ case 'ArrowDown':
+ handled = this._list.selectNextItem(true, false);
+ break;
+ case 'PageUp':
+ handled = this._list.selectItemPreviousPage(false);
+ break;
+ case 'PageDown':
+ handled = this._list.selectItemNextPage(false);
break;
- default:
}
+ if (handled)
+ event.consume(true);
}
_scheduleFilter() {
@@ -337,20 +360,6 @@ UI.FilteredListWidget = class extends UI.VBox {
return;
this._filterTimer = setTimeout(this._filterItems.bind(this), 0);
}
-
- /**
- * @param {!Event} event
- */
- _onClick(event) {
- if (!this._list.onClick(event))
- return;
-
- event.consume(true);
- // Detach dialog before allowing delegate to override focus.
- if (this._dialog)
- this._dialog.detach();
- this._delegate.selectItemWithQuery(this._list.selectedItem(), this._value());
- }
};

Powered by Google App Engine
This is Rietveld 408576698