Changeset 211318 in webkit
- Timestamp:
- Jan 27, 2017, 6:27:56 PM (10 years ago)
- Location:
- trunk/Source/WebInspectorUI
- Files:
-
- 3 edited
-
ChangeLog (modified) (1 diff)
-
UserInterface/Views/GradientEditor.css (modified) (4 diffs)
-
UserInterface/Views/GradientEditor.js (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebInspectorUI/ChangeLog
r211075 r211318 1 2017-01-27 Devin Rousso <dcrousso+webkit@gmail.com> 2 3 Web Inspector: gradient editor should provide horizontal slider for 'angle' value where applicable 4 https://bugs.webkit.org/show_bug.cgi?id=166937 5 6 Reviewed by Joseph Pecoraro. 7 8 * UserInterface/Views/GradientEditor.css: 9 (.gradient-editor): 10 (.gradient-editor > .gradient-angle): 11 (.gradient-editor > .gradient-angle > input[type="range"]): 12 (.gradient-editor > .gradient-angle > input[type="number"]): 13 (.gradient-editor > .gradient-angle > input::-webkit-inner-spin-button): 14 (.gradient-editor > .gradient-angle > input): Deleted. 15 16 * UserInterface/Views/GradientEditor.js: 17 (WebInspector.GradientEditor): 18 (WebInspector.GradientEditor.prototype.set gradient): 19 (WebInspector.GradientEditor.prototype.gradientSliderStopWasSelected): 20 (WebInspector.GradientEditor.prototype._gradientTypeChanged): 21 (WebInspector.GradientEditor.prototype._angleChanged): 22 (WebInspector.GradientEditor.prototype.dragToAdjustControllerWasAdjustedByAmount): Deleted. 23 (WebInspector.GradientEditor.prototype._angleInputValueDidChange): Deleted. 24 Remove the DragToAdjustController and replace with an <input type="range">. 25 1 26 2017-01-23 Joseph Pecoraro <pecoraro@apple.com> 2 27 -
trunk/Source/WebInspectorUI/UserInterface/Views/GradientEditor.css
r192705 r211318 27 27 position: relative; 28 28 margin: 5px 11px; 29 padding-bottom: 4 5px;29 padding-bottom: 40px; 30 30 } 31 31 … … 75 75 76 76 .gradient-editor > .gradient-angle { 77 display: flex; 78 align-items: center; 77 79 position: absolute; 78 80 right: 0; 79 81 bottom: 0; 80 text-align: right;82 left: 0; 81 83 font-size: 13px; 82 84 } … … 86 88 } 87 89 88 .gradient-editor > .gradient-angle > input { 89 width: 48px; 90 margin-left: 5px; 90 .gradient-editor > .gradient-angle > input[type="range"] { 91 width: 100%; 92 margin: 0 4px; 93 } 94 95 .gradient-editor > .gradient-angle > input[type="number"] { 96 width: 60px; 97 margin-right: 2px; 91 98 padding-right: 4px; 92 99 text-align: right; … … 98 105 outline: none; 99 106 } 107 108 .gradient-editor > .gradient-angle > input::-webkit-inner-spin-button { 109 -webkit-appearance: none; 110 } -
trunk/Source/WebInspectorUI/UserInterface/Views/GradientEditor.js
r211057 r211318 76 76 this._colorPicker.addEventListener(WebInspector.ColorPicker.Event.ColorChanged, this._colorPickerColorChanged, this); 77 77 78 let angleLabel = this._element.appendChild(document.createElement("label")); 79 angleLabel.classList.add("gradient-angle"); 80 angleLabel.append(WebInspector.UIString("Angle")); 81 82 this._angleInput = angleLabel.appendChild(document.createElement("input")); 83 this._angleInput.type = "text"; 84 this._angleInput.addEventListener("input", this._angleChanged.bind(this)); 85 86 let dragToAdjustController = new WebInspector.DragToAdjustController(this); 87 dragToAdjustController.element = angleLabel; 88 dragToAdjustController.enabled = true; 78 let angleContainerElement = this._element.appendChild(document.createElement("div")); 79 angleContainerElement.classList.add("gradient-angle"); 80 angleContainerElement.append(WebInspector.UIString("Angle")); 81 82 let boundAngleChanged = this._angleChanged.bind(this); 83 84 this._angleSliderElement = angleContainerElement.appendChild(document.createElement("input")); 85 this._angleSliderElement.type = "range"; 86 this._angleSliderElement.min = 0; 87 this._angleSliderElement.max = 360; 88 this._angleSliderElement.addEventListener("input", boundAngleChanged); 89 90 this._angleInputElement = angleContainerElement.appendChild(document.createElement("input")); 91 this._angleInputElement.type = "number"; 92 this._angleInputElement.min = 0; 93 this._angleInputElement.max = 360; 94 this._angleInputElement.addEventListener("input", boundAngleChanged); 95 96 angleContainerElement.append("deg"); 89 97 } 90 98 … … 109 117 if (isLinear) { 110 118 this._gradientTypePicker.value = this._gradient.repeats ? "repeating-linear-gradient" : "linear-gradient"; 111 this._angle Input.value = this._gradient.angle + "\u00B0";119 this._angleSliderElement.value = this._angleInputElement.value = this._gradient.angle; 112 120 } else 113 121 this._gradientTypePicker.value = this._gradient.repeats ? "repeating-radial-gradient" : "radial-gradient"; … … 146 154 // Ensure the angle input is not focused since, if it were, it'd make a scrollbar appear as we 147 155 // animate the popover's frame to fit its new content. 148 this._angleInput .blur();156 this._angleInputElement.blur(); 149 157 150 158 this.dispatchEventToListeners(WebInspector.GradientEditor.Event.ColorPickerToggled); 151 159 this.dispatchEventToListeners(WebInspector.GradientEditor.Event.GradientChanged, {gradient: this._gradient}); 152 }153 154 dragToAdjustControllerWasAdjustedByAmount(dragToAdjustController, amount)155 {156 const angleInputValue = parseFloat(this._angleInput.value);157 if (isNaN(angleInputValue))158 return;159 160 let angle = angleInputValue + amount;161 if (Math.round(angle) !== angle)162 angle = angle.toFixed(1);163 164 this._angleInput.value = angle;165 this._angleInputValueDidChange(angle);166 160 } 167 161 … … 182 176 if (descriptor.type === WebInspector.LinearGradient) { 183 177 this._gradient = new WebInspector.LinearGradient(180, this._gradient.stops); 184 this._angle Input.value = "180\u00B0";178 this._angleSliderElement.value = this._angleInputElement.value = 180; 185 179 } else 186 180 this._gradient = new WebInspector.RadialGradient("", this._gradient.stops); … … 203 197 _angleChanged(event) 204 198 { 205 const angle = parseFloat(this._angleInput.value) || 0; 206 if (isNaN(angle)) 199 switch (event.target) { 200 case this._angleInputElement: 201 this._gradient.angle = this._angleSliderElement.value = parseFloat(this._angleInputElement.value) || 0; 202 break; 203 case this._angleSliderElement: 204 this._gradient.angle = this._angleInputElement.value = parseFloat(this._angleSliderElement.value) || 0; 205 break; 206 default: 207 WebInspector.reportInternalError("Input event fired for disabled color component input"); 207 208 return; 208 209 this._angleInputValueDidChange(angle);210 }211 212 _angleInputValueDidChange(angle)213 {214 this._gradient.angle = angle;215 const matches = this._angleInput.value.match(/\u00B0/g);216 if (!matches || matches.length !== 1) {217 const savedStart = this._angleInput.selectionStart;218 this._angleInput.value = angle + "\u00B0";219 this._angleInput.selectionStart = savedStart;220 this._angleInput.selectionEnd = savedStart;221 209 } 222 210
Note:
See TracChangeset
for help on using the changeset viewer.