⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 211318 in webkit


Ignore:
Timestamp:
Jan 27, 2017, 6:27:56 PM (10 years ago)
Author:
commit-queue@webkit.org
Message:

Web Inspector: gradient editor should provide horizontal slider for 'angle' value where applicable
​https://bugs.webkit.org/show_bug.cgi?id=166937

Patch by Devin Rousso <Devin Rousso> on 2017-01-27
Reviewed by Joseph Pecoraro.

  • UserInterface/Views/GradientEditor.css:

(.gradient-editor):
(.gradient-editor > .gradient-angle):
(.gradient-editor > .gradient-angle > input[type="range"]):
(.gradient-editor > .gradient-angle > input[type="number"]):
(.gradient-editor > .gradient-angle > input::-webkit-inner-spin-button):
(.gradient-editor > .gradient-angle > input): Deleted.

  • UserInterface/Views/GradientEditor.js:

(WebInspector.GradientEditor):
(WebInspector.GradientEditor.prototype.set gradient):
(WebInspector.GradientEditor.prototype.gradientSliderStopWasSelected):
(WebInspector.GradientEditor.prototype._gradientTypeChanged):
(WebInspector.GradientEditor.prototype._angleChanged):
(WebInspector.GradientEditor.prototype.dragToAdjustControllerWasAdjustedByAmount): Deleted.
(WebInspector.GradientEditor.prototype._angleInputValueDidChange): Deleted.
Remove the DragToAdjustController and replace with an <input type="range">.

Location:
trunk/Source/WebInspectorUI
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebInspectorUI/ChangeLog

    r211075 r211318  
     12017-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
    1262017-01-23  Joseph Pecoraro  <pecoraro@apple.com>
    227
  • trunk/Source/WebInspectorUI/UserInterface/Views/GradientEditor.css

    r192705 r211318  
    2727    position: relative;
    2828    margin: 5px 11px;
    29     padding-bottom: 45px;
     29    padding-bottom: 40px;
    3030}
    3131
    … …  
    7575
    7676.gradient-editor > .gradient-angle {
     77    display: flex;
     78    align-items: center;
    7779    position: absolute;
    7880    right: 0;
    7981    bottom: 0;
    80     text-align: right;
     82    left: 0;
    8183    font-size: 13px;
    8284}
    … …  
    8688}
    8789
    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;
    9198    padding-right: 4px;
    9299    text-align: right;
    … …  
    98105    outline: none;
    99106}
     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  
    7676        this._colorPicker.addEventListener(WebInspector.ColorPicker.Event.ColorChanged, this._colorPickerColorChanged, this);
    7777
    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");
    8997    }
    9098
    … …  
    109117        if (isLinear) {
    110118            this._gradientTypePicker.value = this._gradient.repeats ? "repeating-linear-gradient" : "linear-gradient";
    111             this._angleInput.value = this._gradient.angle + "\u00B0";
     119            this._angleSliderElement.value = this._angleInputElement.value = this._gradient.angle;
    112120        } else
    113121            this._gradientTypePicker.value = this._gradient.repeats ? "repeating-radial-gradient" : "radial-gradient";
    … …  
    146154        // Ensure the angle input is not focused since, if it were, it'd make a scrollbar appear as we
    147155        // animate the popover's frame to fit its new content.
    148         this._angleInput.blur();
     156        this._angleInputElement.blur();
    149157
    150158        this.dispatchEventToListeners(WebInspector.GradientEditor.Event.ColorPickerToggled);
    151159        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);
    166160    }
    167161
    … …  
    182176            if (descriptor.type === WebInspector.LinearGradient) {
    183177                this._gradient = new WebInspector.LinearGradient(180, this._gradient.stops);
    184                 this._angleInput.value = "180\u00B0";
     178                this._angleSliderElement.value = this._angleInputElement.value = 180;
    185179            } else
    186180                this._gradient = new WebInspector.RadialGradient("", this._gradient.stops);
    … …  
    203197    _angleChanged(event)
    204198    {
    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");
    207208            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;
    221209        }
    222210
Note: See TracChangeset for help on using the changeset viewer.