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 7cb25afe43d69abeea683fee6793bab7e874db82..d9a4d77a8a2f45e8666da4c89073aa7e2e18477d 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 |
@@ -74,11 +74,13 @@ UI.FilteredListWidget = class extends UI.VBox { |
showAsDialog() { |
this._dialog = new UI.Dialog(); |
+ this._dialog.setFixedHeight(false); |
this._dialog.setMaxSize(new Size(504, 340)); |
this._dialog.setPosition(undefined, 22); |
this.show(this._dialog.element); |
this._dialog.show(); |
this._progressElementWidth = this._progressElement.offsetWidth; |
+ this._updateShowMatchingItems(); |
} |
/** |
@@ -102,8 +104,6 @@ UI.FilteredListWidget = class extends UI.VBox { |
*/ |
_onEnter(event) { |
event.preventDefault(); |
- if (!this._delegate.itemCount()) |
- return; |
var selectedIndex = this._shouldShowMatchingItems() && this._selectedIndexInFiltered < this._filteredItems.length ? |
this._filteredItems[this._selectedIndexInFiltered] : |
null; |
@@ -135,8 +135,13 @@ UI.FilteredListWidget = class extends UI.VBox { |
itemElement._titleElement = itemElement.createChild('div', 'filtered-list-widget-title'); |
itemElement._subtitleElement = itemElement.createChild('div', 'filtered-list-widget-subtitle'); |
itemElement._subtitleElement.textContent = '\u200B'; |
- itemElement._index = index; |
- this._delegate.renderItem(index, this._value(), itemElement._titleElement, itemElement._subtitleElement); |
+ if (index < this._filteredItems.length) { |
+ var delegateIndex = this._filteredItems[index]; |
+ itemElement._index = delegateIndex; |
+ this._delegate.renderItem(delegateIndex, this._value(), itemElement._titleElement, itemElement._subtitleElement); |
+ } else { |
+ itemElement._titleElement.textContent = this._delegate.notFoundText(this._value()); |
+ } |
return itemElement; |
} |
@@ -147,6 +152,7 @@ UI.FilteredListWidget = class extends UI.VBox { |
this._prompt.setText(query); |
this._prompt.autoCompleteSoon(true); |
this._scheduleFilter(); |
+ this._updateShowMatchingItems(); |
} |
_tabKeyPressed() { |
@@ -359,7 +365,7 @@ UI.FilteredListWidget = class extends UI.VBox { |
_onClick(event) { |
var itemElement = event.target.enclosingNodeOrSelfWithClass('filtered-list-widget-item'); |
- if (!itemElement) |
+ if (!itemElement || !('_index' in itemElement)) |
return; |
// Detach dialog before allowing delegate to override focus. |
@@ -373,7 +379,7 @@ UI.FilteredListWidget = class extends UI.VBox { |
* @return {number} |
*/ |
itemCount() { |
- return this._filteredItems.length; |
+ return Math.max(this._filteredItems.length, 1); |
} |
/** |
@@ -382,11 +388,10 @@ UI.FilteredListWidget = class extends UI.VBox { |
* @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; |
- } |
+ if (!this._filteredItems.length) |
+ return UI.measurePreferredSize(this._createItemElement(index), this._itemElementsContainer).height; |
+ if (!this._rowHeight) |
+ this._rowHeight = UI.measurePreferredSize(this._createItemElement(index), this._itemElementsContainer).height; |
return this._rowHeight; |
} |
@@ -397,7 +402,7 @@ UI.FilteredListWidget = class extends UI.VBox { |
*/ |
itemElement(index) { |
if (!this._elements[index]) |
- this._elements[index] = this._createItemElement(this._filteredItems[index]); |
+ this._elements[index] = this._createItemElement(index); |
return this._elements[index]; |
} |
}; |
@@ -565,6 +570,14 @@ UI.FilteredListWidget.Delegate = class { |
return query; |
} |
+ /** |
+ * @param {string} query |
+ * @return {string} |
+ */ |
+ notFoundText(query) { |
+ return Common.UIString('No results found.'); |
+ } |
+ |
dispose() { |
} |
}; |