Title: [193072] branches/safari-601-branch/Source/WebInspectorUI

Diff

Modified: branches/safari-601-branch/Source/WebInspectorUI/ChangeLog (193071 => 193072)


--- branches/safari-601-branch/Source/WebInspectorUI/ChangeLog	2015-12-03 18:43:11 UTC (rev 193071)
+++ branches/safari-601-branch/Source/WebInspectorUI/ChangeLog	2015-12-03 18:43:17 UTC (rev 193072)
@@ -1,5 +1,31 @@
 2015-12-02  Timothy Hatcher  <[email protected]>
 
+        Merge r188138. rdar://problem/23221163
+
+    2015-08-07  Devin Rousso  <[email protected]>
+
+            Web Inspector: Option+Up/Down arrow keys should increment/decrement numbers in HTML and SVG attributes
+            https://bugs.webkit.org/show_bug.cgi?id=147317
+
+            Reviewed by Timothy Hatcher.
+
+            If the value under the cursor in an HTML element attribute is a number, pressing alt and
+            up/down will increment/decrement the number value and apply that change to the element.
+
+            * UserInterface/Views/BoxModelDetailsSectionRow.js:
+            (WebInspector.BoxModelDetailsSectionRow.prototype._alteredFloatNumber):
+            (WebInspector.BoxModelDetailsSectionRow.prototype._handleKeyDown):
+            * UserInterface/Views/DOMTreeElement.js:
+            (WebInspector.DOMTreeElement.prototype._startEditingAttribute):
+            (WebInspector.DOMTreeElement.prototype._attributeEditingCommitted):
+            (WebInspector.DOMTreeElement.prototype._attributeNumberEditingCommitted):
+            * UserInterface/Views/EditingSupport.js:
+            (WebInspector.EditingConfig.prototype.setNumberCommitHandler):
+            (WebInspector.startEditing.defaultFinishHandler):
+            (WebInspector.startEditing.handleEditingResult):
+
+2015-12-02  Timothy Hatcher  <[email protected]>
+
         Merge r188029. rdar://problem/23221163
 
     2015-08-05  Devin Rousso  <[email protected]>

Modified: branches/safari-601-branch/Source/WebInspectorUI/UserInterface/Views/BoxModelDetailsSectionRow.js (193071 => 193072)


--- branches/safari-601-branch/Source/WebInspectorUI/UserInterface/Views/BoxModelDetailsSectionRow.js	2015-12-03 18:43:11 UTC (rev 193071)
+++ branches/safari-601-branch/Source/WebInspectorUI/UserInterface/Views/BoxModelDetailsSectionRow.js	2015-12-03 18:43:17 UTC (rev 193072)
@@ -295,7 +295,7 @@
         // Make the new number and constrain it to a precision of 6, this matches numbers the engine returns.
         // Use the Number constructor to forget the fixed precision, so 1.100000 will print as 1.1.
         var result = Number((number + changeAmount).toFixed(6));
-        if (!String(result).match(WebInspector.BoxModelDetailsSectionRow.CSSNumberRegex))
+        if (!String(result).match(WebInspector.EditingSupport.NumberRegex))
             return null;
 
         return result;
@@ -317,10 +317,10 @@
             return;
 
         var originalValue = element.textContent;
-        var wordRange = selectionRange.startContainer.rangeOfWord(selectionRange.startOffset, WebInspector.BoxModelDetailsSectionRow.StyleValueDelimiters, element);
+        var wordRange = selectionRange.startContainer.rangeOfWord(selectionRange.startOffset, WebInspector.EditingSupport.StyleValueDelimiters, element);
         var wordString = wordRange.toString();
 
-        var matches = /(.*?)(-?(?:\d+(?:\.\d+)?|\.\d+))(.*)/.exec(wordString);
+        var matches = WebInspector.EditingSupport.NumberRegex.exec(wordString);
         var replacementString;
         if (matches && matches.length) {
             var prefix = matches[1];
@@ -442,6 +442,3 @@
         this._applyUserInput(element, userInput, previousContent, context, true);
     }
 };
-
-WebInspector.BoxModelDetailsSectionRow.StyleValueDelimiters = " \xA0\t\n\"':;,/()";
-WebInspector.BoxModelDetailsSectionRow.CSSNumberRegex = /^(-?(?:\d+(?:\.\d+)?|\.\d+))$/;

Modified: branches/safari-601-branch/Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js (193071 => 193072)


--- branches/safari-601-branch/Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js	2015-12-03 18:43:11 UTC (rev 193071)
+++ branches/safari-601-branch/Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js	2015-12-03 18:43:17 UTC (rev 193072)
@@ -756,6 +756,7 @@
         removeZeroWidthSpaceRecursive(attribute);
 
         var config = new WebInspector.EditingConfig(this._attributeEditingCommitted.bind(this), this._editingCancelled.bind(this), attributeName);
+        config.setNumberCommitHandler(this._attributeNumberEditingCommitted.bind(this));
         this._editing = WebInspector.startEditing(attribute, config);
 
         window.getSelection().setBaseAndExtent(elementForSelection, 0, elementForSelection, 1);
@@ -876,6 +877,9 @@
 
     _attributeEditingCommitted(element, newText, oldText, attributeName, moveDirection)
     {
+        if (newText === oldText)
+            return;
+
         this._editing = false;
 
         var treeOutline = this.treeOutline;
@@ -931,6 +935,14 @@
         this.representedObject.setAttribute(attributeName, newText, moveToNextAttributeIfNeeded.bind(this));
     }
 
+    _attributeNumberEditingCommitted(element, newText, oldText, attributeName, moveDirection)
+    {
+        if (newText === oldText)
+            return;
+
+        this.representedObject.setAttribute(attributeName, newText);
+    }
+
     _tagNameEditingCommitted(element, newText, oldText, tagName, moveDirection)
     {
         this._editing = false;

Modified: branches/safari-601-branch/Source/WebInspectorUI/UserInterface/Views/EditingSupport.js (193071 => 193072)


--- branches/safari-601-branch/Source/WebInspectorUI/UserInterface/Views/EditingSupport.js	2015-12-03 18:43:11 UTC (rev 193071)
+++ branches/safari-601-branch/Source/WebInspectorUI/UserInterface/Views/EditingSupport.js	2015-12-03 18:43:17 UTC (rev 193072)
@@ -98,6 +98,11 @@
     {
         this.customFinishHandler = customFinishHandler;
     }
+
+    setNumberCommitHandler(numberCommitHandler)
+    {
+        this.numberCommitHandler = numberCommitHandler;
+    }
 };
 
 WebInspector.startEditing = function(element, config)
@@ -190,6 +195,12 @@
             return "cancel";
         else if (event.keyIdentifier === "U+0009") // Tab key
             return "move-" + (event.shiftKey ? "backward" : "forward");
+        else if (event.altKey) {
+            if (event.keyIdentifier === "Up" || event.keyIdentifier === "Down")
+                return "modify-" + (event.keyIdentifier === "Up" ? "up" : "down");
+            if (event.keyIdentifier === "PageUp" || event.keyIdentifier === "PageDown")
+                return "modify-" + (event.keyIdentifier === "PageUp" ? "up-big" : "down-big");
+        }
     }
 
     function handleEditingResult(result, event)
@@ -206,6 +217,62 @@
             moveDirection = result.substring(5);
             if (event.keyIdentifier !== "U+0009")
                 blurEventListener();
+        } else if (result && result.startsWith("modify-")) {
+            var direction = result.substring(7);
+            var modifyValue = direction.startsWith("up") ? 1 : -1;
+            if (direction.endsWith("big"))
+                modifyValue *= 10;
+
+            if (event.shiftKey)
+                modifyValue *= 10;
+            else if (event.ctrlKey)
+                modifyValue /= 10;
+
+            var selection = element.ownerDocument.defaultView.getSelection();
+            if (!selection.rangeCount)
+                return;
+
+            var range = selection.getRangeAt(0);
+            if (!range.commonAncestorContainer.isSelfOrDescendant(element))
+                return false;
+
+            var wordRange = range.startContainer.rangeOfWord(range.startOffset, WebInspector.EditingSupport.StyleValueDelimiters, element);
+            var word = wordRange.toString();
+            var wordPrefix = "";
+            var wordSuffix = "";
+            var nonNumberInWord = /[^\d-\.]+/.exec(word);
+            if (nonNumberInWord) {
+                var nonNumberEndOffset = nonNumberInWord.index + nonNumberInWord[0].length;
+                if (range.startOffset > wordRange.startOffset + nonNumberInWord.index && nonNumberEndOffset < word.length && range.startOffset !== wordRange.startOffset) {
+                    wordPrefix = word.substring(0, nonNumberEndOffset);
+                    word = word.substring(nonNumberEndOffset);
+                } else {
+                    wordSuffix = word.substring(nonNumberInWord.index);
+                    word = word.substring(0, nonNumberInWord.index);
+                }
+            }
+
+            var matches = WebInspector.EditingSupport.CSSNumberRegex.exec(word);
+            if (!matches || matches.length !== 4)
+                return;
+
+            var replacement = matches[1] + (Math.round((parseFloat(matches[2]) + modifyValue) * 100) / 100) + matches[3];
+
+            selection.removeAllRanges();
+            selection.addRange(wordRange);
+            document.execCommand("insertText", false, wordPrefix + replacement + wordSuffix);
+
+            var replacementSelectionRange = document.createRange();
+            replacementSelectionRange.setStart(wordRange.commonAncestorContainer, wordRange.startOffset + wordPrefix.length);
+            replacementSelectionRange.setEnd(wordRange.commonAncestorContainer, wordRange.startOffset + wordPrefix.length + replacement.length);
+
+            selection.removeAllRanges();
+            selection.addRange(replacementSelectionRange);
+
+            if (typeof config.numberCommitHandler === "function")
+                config.numberCommitHandler(element, getContent(element), oldText, context, moveDirection);
+
+            event.preventDefault();
         }
     }
 
@@ -234,3 +301,9 @@
         commit: editingCommitted.bind(element)
     };
 };
+
+WebInspector.EditingSupport = {
+    StyleValueDelimiters: " \xA0\t\n\"':;,/()",
+    CSSNumberRegex: /(.*?)(-?(?:\d+(?:\.\d+)?|\.\d+))(.*)/,
+    NumberRegex: /^(-?(?:\d+(?:\.\d+)?|\.\d+))$/
+};
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to