Title: [242218] trunk/Source/WebInspectorUI
- Revision
- 242218
- Author
- [email protected]
- Date
- 2019-02-28 13:19:25 -0800 (Thu, 28 Feb 2019)
Log Message
Web Inspector: Styles: Control-Space should force completion
https://bugs.webkit.org/show_bug.cgi?id=194796
<rdar://problem/48180822>
Reviewed by Matt Baker.
Pressing Control-Space when editing CSS property should show completion popover,
even if the value is empty.
* UserInterface/Models/CSSCompletions.js:
(WI.CSSCompletions.prototype.startsWith):
Performance optimization: exit early when `prefix` is empty.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype._nameCompletionDataProvider):
(WI.SpreadsheetStyleProperty.prototype._valueCompletionDataProvider):
* UserInterface/Views/SpreadsheetTextField.js:
(WI.SpreadsheetTextField):
(WI.SpreadsheetTextField.prototype._handleKeyDown):
(WI.SpreadsheetTextField.prototype._updateCompletions):
Modified Paths
Diff
Modified: trunk/Source/WebInspectorUI/ChangeLog (242217 => 242218)
--- trunk/Source/WebInspectorUI/ChangeLog 2019-02-28 21:06:59 UTC (rev 242217)
+++ trunk/Source/WebInspectorUI/ChangeLog 2019-02-28 21:19:25 UTC (rev 242218)
@@ -1,3 +1,26 @@
+2019-02-28 Nikita Vasilyev <[email protected]>
+
+ Web Inspector: Styles: Control-Space should force completion
+ https://bugs.webkit.org/show_bug.cgi?id=194796
+ <rdar://problem/48180822>
+
+ Reviewed by Matt Baker.
+
+ Pressing Control-Space when editing CSS property should show completion popover,
+ even if the value is empty.
+
+ * UserInterface/Models/CSSCompletions.js:
+ (WI.CSSCompletions.prototype.startsWith):
+ Performance optimization: exit early when `prefix` is empty.
+
+ * UserInterface/Views/SpreadsheetStyleProperty.js:
+ (WI.SpreadsheetStyleProperty.prototype._nameCompletionDataProvider):
+ (WI.SpreadsheetStyleProperty.prototype._valueCompletionDataProvider):
+ * UserInterface/Views/SpreadsheetTextField.js:
+ (WI.SpreadsheetTextField):
+ (WI.SpreadsheetTextField.prototype._handleKeyDown):
+ (WI.SpreadsheetTextField.prototype._updateCompletions):
+
2019-02-28 Devin Rousso <[email protected]>
Web Inspector: Canvas: enabling auto-capture if the frame count is empty triggers an assertion
Modified: trunk/Source/WebInspectorUI/UserInterface/Models/CSSCompletions.js (242217 => 242218)
--- trunk/Source/WebInspectorUI/UserInterface/Models/CSSCompletions.js 2019-02-28 21:06:59 UTC (rev 242217)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/CSSCompletions.js 2019-02-28 21:19:25 UTC (rev 242218)
@@ -265,11 +265,14 @@
startsWith(prefix)
{
- var firstIndex = this._firstIndexOfPrefix(prefix);
+ if (!prefix)
+ return this._acceptEmptyPrefix ? this._values.slice() : [];
+
+ let firstIndex = this._firstIndexOfPrefix(prefix);
if (firstIndex === -1)
return [];
- var results = [];
+ let results = [];
while (firstIndex < this._values.length && this._values[firstIndex].startsWith(prefix))
results.push(this._values[firstIndex++]);
return results;
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/SpreadsheetStyleProperty.js (242217 => 242218)
--- trunk/Source/WebInspectorUI/UserInterface/Views/SpreadsheetStyleProperty.js 2019-02-28 21:06:59 UTC (rev 242217)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/SpreadsheetStyleProperty.js 2019-02-28 21:19:25 UTC (rev 242218)
@@ -727,12 +727,14 @@
}
}
- _nameCompletionDataProvider(prefix)
+ _nameCompletionDataProvider(prefix, options = {})
{
- return {
- prefix,
- completions: WI.CSSCompletions.cssNameCompletions.startsWith(prefix)
- };
+ let completions;
+ if (!prefix && options.allowEmptyPrefix)
+ completions = WI.CSSCompletions.cssNameCompletions.values;
+ else
+ completions = WI.CSSCompletions.cssNameCompletions.startsWith(prefix);
+ return {prefix, completions};
}
_handleValueBeforeInput(event)
@@ -758,10 +760,12 @@
{
// For "border: 1px so|", we want to suggest "solid" based on "so" prefix.
let match = prefix.match(/[a-z0-9()-]+$/i);
- if (!match)
+
+ // Clicking on the value of `height: 100%` shouldn't show any completions.
+ if (!match && prefix)
return {completions: [], prefix: ""};
- prefix = match[0];
+ prefix = match ? match[0] : "";
let propertyName = this._nameElement.textContent.trim();
return {
prefix,
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js (242217 => 242218)
--- trunk/Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js 2019-02-28 21:06:59 UTC (rev 242217)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js 2019-02-28 21:19:25 UTC (rev 242218)
@@ -49,6 +49,7 @@
this._editing = false;
this._valueBeforeEditing = "";
this._completionPrefix = "";
+ this._controlSpaceKeyboardShortcut = new WI.KeyboardShortcut(WI.KeyboardShortcut.Modifier.Control, WI.KeyboardShortcut.Key.Space);
}
// Public
@@ -278,6 +279,17 @@
}
}
+ if (this._controlSpaceKeyboardShortcut.matchesEvent(event)) {
+ event.stop();
+ if (this._suggestionsView.visible)
+ this._suggestionsView.hide();
+ else {
+ const forceCompletions = true;
+ this._updateCompletions(forceCompletions);
+ }
+ return;
+ }
+
if (event.key === "Escape") {
event.stop();
this._discardChange();
@@ -358,13 +370,13 @@
this._delegate.spreadsheetTextFieldDidChange(this);
}
- _updateCompletions()
+ _updateCompletions(forceCompletions = false)
{
if (!this._completionProvider)
return;
let valueWithoutSuggestion = this.valueWithoutSuggestion();
- let {completions, prefix} = this._completionProvider(valueWithoutSuggestion);
+ let {completions, prefix} = this._completionProvider(valueWithoutSuggestion, {allowEmptyPrefix: forceCompletions});
this._completionPrefix = prefix;
if (!completions.length) {
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes