Changeset 82674 in webkit
- Timestamp:
- Apr 1, 2011 6:14:24 AM (13 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r82669 r82674 1 2011-04-01 Alexander Pavlov <apavlov@chromium.org> 2 3 Reviewed by Yury Semikhatsky. 4 5 Web Inspector: up/down keys are not treating hex numbers properly while editing styles. 6 https://bugs.webkit.org/show_bug.cgi?id=40522 7 8 * http/tests/inspector/inspector-test.js: 9 (initialize_InspectorTest.InspectorTest.createKeyEvent): Added arguments for key modifiers. 10 * inspector/styles/up-down-numerics-and-colors-expected.txt: Added. 11 * inspector/styles/up-down-numerics-and-colors.html: Added. 12 1 13 2011-04-01 Sheriff Bot <webkit.review.bot@gmail.com> 2 14 -
trunk/LayoutTests/http/tests/inspector/inspector-test.js
r82281 r82674 158 158 } 159 159 160 InspectorTest.createKeyEvent = function(keyIdentifier )160 InspectorTest.createKeyEvent = function(keyIdentifier, ctrlKey, altKey, shiftKey, metaKey) 161 161 { 162 162 var evt = document.createEvent("KeyboardEvent"); 163 evt.initKeyboardEvent("keydown", true /* can bubble */, true /* can cancel */, null /* view */, keyIdentifier, "" );163 evt.initKeyboardEvent("keydown", true /* can bubble */, true /* can cancel */, null /* view */, keyIdentifier, "", ctrlKey, altKey, shiftKey, metaKey); 164 164 return evt; 165 165 } -
trunk/Source/WebCore/ChangeLog
r82670 r82674 1 2011-04-01 Alexander Pavlov <apavlov@chromium.org> 2 3 Reviewed by Yury Semikhatsky. 4 5 Web Inspector: up/down keys are not treating hex numbers properly while editing styles. 6 https://bugs.webkit.org/show_bug.cgi?id=40522 7 8 Drive-by: fix inc/dec for numbers like ".5" 9 10 Test: inspector/styles/up-down-numerics-and-colors.html 11 12 * inspector/front-end/StylesSidebarPane.js: 13 (WebInspector.StylePropertyTreeElement.prototype): 14 1 15 2011-03-30 Pavel Podivilov <podivilov@chromium.org> 2 16 -
trunk/Source/WebCore/inspector/front-end/StylesSidebarPane.js
r80713 r82674 1644 1644 var wordRange = selectionRange.startContainer.rangeOfWord(selectionRange.startOffset, WebInspector.StylesSidebarPane.StyleValueDelimiters, this.valueElement); 1645 1645 var wordString = wordRange.toString(); 1646 var replacementString = wordString; 1647 1648 var matches = /(.*?)(-?\d+(?:\.\d+)?)(.*)/.exec(wordString); 1646 var replacementString; 1647 var prefix, suffix, number; 1648 1649 var matches; 1650 matches = /(.*#)([\da-fA-F]+)(.*)/.exec(wordString); 1649 1651 if (matches && matches.length) { 1650 var prefix = matches[1]; 1651 var number = parseFloat(matches[2]); 1652 var suffix = matches[3]; 1653 1654 // If the number is near zero or the number is one and the direction will take it near zero. 1655 var numberNearZero = (number < 1 && number > -1); 1656 if (number === 1 && event.keyIdentifier === "Down") 1657 numberNearZero = true; 1658 else if (number === -1 && event.keyIdentifier === "Up") 1659 numberNearZero = true; 1660 1661 if (numberNearZero && event.altKey && arrowKeyPressed) { 1662 if (event.keyIdentifier === "Down") 1663 number = Math.ceil(number - 1); 1664 else 1665 number = Math.floor(number + 1); 1666 } else { 1667 // Jump by 10 when shift is down or jump by 0.1 when near zero or Alt/Option is down. 1668 // Also jump by 10 for page up and down, or by 100 if shift is held with a page key. 1669 var changeAmount = 1; 1670 if (event.shiftKey && pageKeyPressed) 1671 changeAmount = 100; 1672 else if (event.shiftKey || pageKeyPressed) 1673 changeAmount = 10; 1674 else if (event.altKey || numberNearZero) 1675 changeAmount = 0.1; 1676 1677 if (event.keyIdentifier === "Down" || event.keyIdentifier === "PageDown") 1678 changeAmount *= -1; 1679 1680 // Make the new number and constrain it to a precision of 6, this matches numbers the engine returns. 1681 // Use the Number constructor to forget the fixed precision, so 1.100000 will print as 1.1. 1682 number = Number((number + changeAmount).toFixed(6)); 1683 } 1652 prefix = matches[1]; 1653 suffix = matches[3]; 1654 number = this._alteredHexNumber(matches[2], event); 1684 1655 1685 1656 replacementString = prefix + number + suffix; 1686 1657 } else { 1658 matches = /(.*?)(-?(?:\d+(?:\.\d+)?|\.\d+))(.*)/.exec(wordString); 1659 if (matches && matches.length) { 1660 prefix = matches[1]; 1661 suffix = matches[3]; 1662 number = this._alteredFloatNumber(parseFloat(matches[2]), event); 1663 1664 replacementString = prefix + number + suffix; 1665 } 1666 } 1667 1668 if (replacementString) { 1687 1669 var replacementTextNode = document.createTextNode(replacementString); 1688 1670 … … 1709 1691 this.applyStyleText(this.nameElement.textContent + ": " + this.valueElement.textContent); 1710 1692 } 1693 }, 1694 1695 _alteredFloatNumber: function(number, event) 1696 { 1697 var arrowKeyPressed = (event.keyIdentifier === "Up" || event.keyIdentifier === "Down"); 1698 // If the number is near zero or the number is one and the direction will take it near zero. 1699 var numberNearZero = (number < 1 && number > -1); 1700 if (number === 1 && event.keyIdentifier === "Down") 1701 numberNearZero = true; 1702 else if (number === -1 && event.keyIdentifier === "Up") 1703 numberNearZero = true; 1704 1705 var result; 1706 if (numberNearZero && event.altKey && arrowKeyPressed) { 1707 if (event.keyIdentifier === "Down") 1708 result = Math.ceil(number - 1); 1709 else 1710 result = Math.floor(number + 1); 1711 } else { 1712 // Jump by 10 when shift is down or jump by 0.1 when near zero or Alt/Option is down. 1713 // Also jump by 10 for page up and down, or by 100 if shift is held with a page key. 1714 var changeAmount = 1; 1715 if (event.shiftKey && !arrowKeyPressed) 1716 changeAmount = 100; 1717 else if (event.shiftKey || !arrowKeyPressed) 1718 changeAmount = 10; 1719 else if (event.altKey || numberNearZero) 1720 changeAmount = 0.1; 1721 1722 if (event.keyIdentifier === "Down" || event.keyIdentifier === "PageDown") 1723 changeAmount *= -1; 1724 1725 // Make the new number and constrain it to a precision of 6, this matches numbers the engine returns. 1726 // Use the Number constructor to forget the fixed precision, so 1.100000 will print as 1.1. 1727 result = Number((number + changeAmount).toFixed(6)); 1728 } 1729 1730 return result; 1731 }, 1732 1733 _alteredHexNumber: function(hexString, event) 1734 { 1735 var number = parseInt(hexString, 16); 1736 if (isNaN(number) || !isFinite(number)) 1737 return hexString; 1738 1739 var maxValue = Math.pow(16, hexString.length) - 1; 1740 var arrowKeyPressed = (event.keyIdentifier === "Up" || event.keyIdentifier === "Down"); 1741 1742 var delta; 1743 if (arrowKeyPressed) 1744 delta = (event.keyIdentifier === "Up") ? 1 : -1; 1745 else 1746 delta = (event.keyIdentifier === "PageUp") ? 16 : -16; 1747 1748 if (event.shiftKey) 1749 delta *= 16; 1750 1751 var result = number + delta; 1752 if (result < 0) 1753 result = 0; // Color hex values are never negative, so clamp to 0. 1754 else if (result > maxValue) 1755 return hexString; 1756 1757 // Ensure the result length is the same as the original hex value. 1758 var resultString = result.toString(16).toUpperCase(); 1759 for (var i = 0, lengthDelta = hexString.length - resultString.length; i < lengthDelta; ++i) 1760 resultString = "0" + resultString; 1761 return resultString; 1711 1762 }, 1712 1763
Note: See TracChangeset
for help on using the changeset viewer.