Title: [225839] trunk/Source/WebInspectorUI
Revision
225839
Author
nvasil...@apple.com
Date
2017-12-12 22:19:57 -0800 (Tue, 12 Dec 2017)

Log Message

Web Inspector: Styles Redesign: navigating away from empty value should remove CSS property
https://bugs.webkit.org/show_bug.cgi?id=180508

Reviewed by Devin Rousso.

Remove a property when navigating away from it (e.g. to the next/previous property,
or outside of the styles panel entirely) and either its name or value is empty:

    color: [ ]->
    <-[ ]: red
    <-[color]:

Don't remove a property when navigating from an empty value to a non-empty name:

    color: <-[ ]

Always remove a property when both name and value are empty.

* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidCommit):
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidBlur):
* UserInterface/Views/SpreadsheetTextField.js:
(WI.SpreadsheetTextField.prototype._handleBlur):
(WI.SpreadsheetTextField.prototype.get valueBeforeEditing): Deleted.

Modified Paths

Diff

Modified: trunk/Source/WebInspectorUI/ChangeLog (225838 => 225839)


--- trunk/Source/WebInspectorUI/ChangeLog	2017-12-13 04:47:23 UTC (rev 225838)
+++ trunk/Source/WebInspectorUI/ChangeLog	2017-12-13 06:19:57 UTC (rev 225839)
@@ -1,3 +1,30 @@
+2017-12-12  Nikita Vasilyev  <nvasil...@apple.com>
+
+        Web Inspector: Styles Redesign: navigating away from empty value should remove CSS property
+        https://bugs.webkit.org/show_bug.cgi?id=180508
+
+        Reviewed by Devin Rousso.
+
+        Remove a property when navigating away from it (e.g. to the next/previous property,
+        or outside of the styles panel entirely) and either its name or value is empty:
+
+            color: [ ]->
+            <-[ ]: red
+            <-[color]:
+
+        Don't remove a property when navigating from an empty value to a non-empty name:
+
+            color: <-[ ]
+
+        Always remove a property when both name and value are empty.
+
+        * UserInterface/Views/SpreadsheetStyleProperty.js:
+        (WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidCommit):
+        (WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidBlur):
+        * UserInterface/Views/SpreadsheetTextField.js:
+        (WI.SpreadsheetTextField.prototype._handleBlur):
+        (WI.SpreadsheetTextField.prototype.get valueBeforeEditing): Deleted.
+
 2017-12-12  Brian Burg  <bb...@apple.com>
 
         Web Inspector: support async setup() and async teardown() in AsyncTestSuite

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/SpreadsheetStyleProperty.js (225838 => 225839)


--- trunk/Source/WebInspectorUI/UserInterface/Views/SpreadsheetStyleProperty.js	2017-12-13 04:47:23 UTC (rev 225838)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/SpreadsheetStyleProperty.js	2017-12-13 06:19:57 UTC (rev 225839)
@@ -231,16 +231,11 @@
         let propertyName = this._nameTextField.value.trim();
         let propertyValue = this._valueTextField.value.trim();
         let willRemoveProperty = false;
-        let newlyAdded = this._valueTextField.valueBeforeEditing === "";
+        let isEditingName = textField === this._nameTextField;
 
-        // Remove a property with an empty name or value. However, a newly added property
-        // has an empty name and value at first. Don't remove it when moving focus from
-        // the name to the value for the first time.
-        if (!propertyName || (!newlyAdded && !propertyValue))
+        if (!propertyName || (!propertyValue && !isEditingName && direction === "forward"))
             willRemoveProperty = true;
 
-        let isEditingName = textField === this._nameTextField;
-
         if (!isEditingName && !willRemoveProperty)
             this._renderValue(propertyValue);
 
@@ -267,11 +262,15 @@
             this._remove();
     }
 
-    spreadsheetTextFieldDidBlur(textField)
+    spreadsheetTextFieldDidBlur(textField, event)
     {
-        if (textField.value.trim() === "")
+        let focusedOutsideThisProperty = event.relatedTarget !== this._nameElement && event.relatedTarget !== this._valueElement;
+        if (focusedOutsideThisProperty && (!this._nameTextField.value.trim() || !this._valueTextField.value.trim())) {
             this._remove();
-        else if (textField === this._valueTextField)
+            return;
+        }
+
+        if (textField === this._valueTextField)
             this._renderValue(this._valueElement.textContent);
     }
 

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js (225838 => 225839)


--- trunk/Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js	2017-12-13 04:47:23 UTC (rev 225838)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js	2017-12-13 06:19:57 UTC (rev 225839)
@@ -58,8 +58,6 @@
     get value() { return this._element.textContent; }
     set value(value) { this._element.textContent = value; }
 
-    get valueBeforeEditing() { return this._valueBeforeEditing; }
-
     get suggestionHint()
     {
         return this._suggestionHintElement.textContent;
@@ -212,7 +210,7 @@
         this._applyCompletionHint();
         this.discardCompletion();
 
-        this._delegate.spreadsheetTextFieldDidBlur(this);
+        this._delegate.spreadsheetTextFieldDidBlur(this, event);
         this.stopEditing();
     }
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to