Changeset 249513 in webkit


Ignore:
Timestamp:
Sep 4, 2019 7:15:48 PM (5 years ago)
Author:
Devin Rousso
Message:

Web Inspector: unify the interaction of show/hide status icons in Sources and Canvas
https://bugs.webkit.org/show_bug.cgi?id=201470

Reviewed by Joseph Pecoraro.

Rather than "fading" the tree element's text when the underlying represented object is
disabled/blackboxed, we should just "fade" the icon. The "fade" shouldn't change when the
tree element is selected. The image of the status eye also shouldn't change depending on
whether the underlying represented object is disabled/blackboxed, as it being visible (even
if it's "faded") is already enough of an indicator.

It should also be possible to toggle the disabled/blackboxed state via the context menu.

  • UserInterface/Views/ContextMenuUtilities.js:

(WI.appendContextMenuItemsForSourceCode):

  • UserInterface/Views/SourceCodeTreeElement.css:

(.tree-outline:not(.navigation-sidebar-panel-content-tree-outline) .item .status > .toggle-script-blackboxed, .tree-outline .item:not(:hover) .status > .toggle-script-blackboxed:not(.blackboxed)): Added.
(.tree-outline:not(.navigation-sidebar-panel-content-tree-outline) .item .status > .toggle-script-blackboxed, .tree-outline .item:not(:hover, .selected) .status > .toggle-script-blackboxed:not(.blackboxed)): Deleted.

  • UserInterface/Models/ShaderProgram.js:

(WI.ShaderProgram):
(WI.ShaderProgram.prototype.get disabled): Added.
(WI.ShaderProgram.prototype.set disabled): Added.
(WI.ShaderProgram.prototype.toggleDisabled): Deleted.

  • UserInterface/Views/ShaderProgramTreeElement.js:

(WI.ShaderProgramTreeElement.prototype.onattach):
(WI.ShaderProgramTreeElement.prototype.ondetach): Added.
(WI.ShaderProgramTreeElement.prototype.canSelectOnMouseDown):
(WI.ShaderProgramTreeElement.prototype.populateContextMenu): Added.
(WI.ShaderProgramTreeElement.prototype._disabledImageElementClicked):
(WI.ShaderProgramTreeElement.prototype._handleShaderProgramDisabledChanged): Added.

  • UserInterface/Views/ShaderProgramTreeElement.css:

(.tree-outline .item.shader-program .status > img): Added.
(.tree-outline .item.shader-program:not(:hover, .selected, .disabled) .status > img): Added.
(.tree-outline .item.shader-program.disabled .status > img): Added.
(@media (prefers-color-scheme: dark) .tree-outline .item.shader-program .status > img): Added.
(.item.shader-program .status > img): Deleted.
(.item.shader-program.disabled:hover .status > img): Deleted.
(.item.shader-program:not(:hover, .selected, .disabled) .status > img): Deleted.
(.item.shader-program.disabled > :not(.status)): Deleted.
(@media (prefers-color-scheme: dark) .item.shader-program .status > img): Deleted.

Location:
trunk/Source/WebInspectorUI
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebInspectorUI/ChangeLog

    r249504 r249513  
     12019-09-04  Devin Rousso  <drousso@apple.com>
     2
     3        Web Inspector: unify the interaction of show/hide status icons in Sources and Canvas
     4        https://bugs.webkit.org/show_bug.cgi?id=201470
     5
     6        Reviewed by Joseph Pecoraro.
     7
     8        Rather than "fading" the tree element's text when the underlying represented object is
     9        disabled/blackboxed, we should just "fade" the icon. The "fade" shouldn't change when the
     10        tree element is selected. The image of the status eye also shouldn't change depending on
     11        whether the underlying represented object is disabled/blackboxed, as it being visible (even
     12        if it's "faded") is already enough of an indicator.
     13
     14        It should also be possible to toggle the disabled/blackboxed state via the context menu.
     15
     16        * UserInterface/Views/ContextMenuUtilities.js:
     17        (WI.appendContextMenuItemsForSourceCode):
     18        * UserInterface/Views/SourceCodeTreeElement.css:
     19        (.tree-outline:not(.navigation-sidebar-panel-content-tree-outline) .item .status > .toggle-script-blackboxed, .tree-outline .item:not(:hover) .status > .toggle-script-blackboxed:not(.blackboxed)): Added.
     20        (.tree-outline:not(.navigation-sidebar-panel-content-tree-outline) .item .status > .toggle-script-blackboxed, .tree-outline .item:not(:hover, .selected) .status > .toggle-script-blackboxed:not(.blackboxed)): Deleted.
     21
     22        * UserInterface/Models/ShaderProgram.js:
     23        (WI.ShaderProgram):
     24        (WI.ShaderProgram.prototype.get disabled): Added.
     25        (WI.ShaderProgram.prototype.set disabled): Added.
     26        (WI.ShaderProgram.prototype.toggleDisabled): Deleted.
     27        * UserInterface/Views/ShaderProgramTreeElement.js:
     28        (WI.ShaderProgramTreeElement.prototype.onattach):
     29        (WI.ShaderProgramTreeElement.prototype.ondetach): Added.
     30        (WI.ShaderProgramTreeElement.prototype.canSelectOnMouseDown):
     31        (WI.ShaderProgramTreeElement.prototype.populateContextMenu): Added.
     32        (WI.ShaderProgramTreeElement.prototype._disabledImageElementClicked):
     33        (WI.ShaderProgramTreeElement.prototype._handleShaderProgramDisabledChanged): Added.
     34        * UserInterface/Views/ShaderProgramTreeElement.css:
     35        (.tree-outline .item.shader-program .status > img): Added.
     36        (.tree-outline .item.shader-program:not(:hover, .selected, .disabled) .status > img): Added.
     37        (.tree-outline .item.shader-program.disabled .status > img): Added.
     38        (@media (prefers-color-scheme: dark) .tree-outline .item.shader-program .status > img): Added.
     39        (.item.shader-program .status > img): Deleted.
     40        (.item.shader-program.disabled:hover .status > img): Deleted.
     41        (.item.shader-program:not(:hover, .selected, .disabled) .status > img): Deleted.
     42        (.item.shader-program.disabled > :not(.status)): Deleted.
     43        (@media (prefers-color-scheme: dark) .item.shader-program .status > img): Deleted.
     44
    1452019-09-04  Joseph Pecoraro  <pecoraro@apple.com>
    246
  • trunk/Source/WebInspectorUI/UserInterface/Models/ShaderProgram.js

    r230127 r249513  
    2424 */
    2525
    26 WI.ShaderProgram = class ShaderProgram
     26WI.ShaderProgram = class ShaderProgram extends WI.Object
    2727{
    2828    constructor(identifier, canvas)
     
    3030        console.assert(identifier);
    3131        console.assert(canvas instanceof WI.Canvas);
     32
     33        super();
    3234
    3335        this._identifier = identifier;
     
    4143    get identifier() { return this._identifier; }
    4244    get canvas() { return this._canvas; }
    43     get disabled() { return this._disabled; }
    4445
    4546    get displayName()
    4647    {
    4748        return WI.UIString("Program %d").format(this._uniqueDisplayNumber);
     49    }
     50
     51    get disabled()
     52    {
     53        return this._disabled;
     54    }
     55
     56    set disabled(disabled)
     57    {
     58        if (this._disabled === disabled)
     59            return;
     60
     61        this._disabled = disabled;
     62
     63        CanvasAgent.setShaderProgramDisabled(this._identifier, disabled);
     64
     65        this.dispatchEventToListeners(ShaderProgram.Event.DisabledChanged);
    4866    }
    4967
     
    6684    {
    6785        this._updateShader(CanvasAgent.ShaderType.Fragment, source);
    68     }
    69 
    70     toggleDisabled(callback)
    71     {
    72         CanvasAgent.setShaderProgramDisabled(this._identifier, !this._disabled, (error) => {
    73             console.assert(!error, error);
    74             if (error)
    75                 return;
    76 
    77             this._disabled = !this._disabled;
    78             callback();
    79         });
    8086    }
    8187
     
    122128    Vertex: "shader-type-vertex",
    123129};
     130
     131WI.ShaderProgram.Event = {
     132    DisabledChanged: "shader-program-disabled-changed",
     133};
  • trunk/Source/WebInspectorUI/UserInterface/Views/ContextMenuUtilities.js

    r249504 r249513  
    8585    contextMenu.appendSeparator();
    8686
     87    if (sourceCode.supportsScriptBlackboxing) {
     88        let isBlackboxed = WI.debuggerManager.isScriptBlackboxed(sourceCode);
     89        contextMenu.appendItem(isBlackboxed ? WI.UIString("Include script when debugging") : WI.UIString("Ignore script when debugging"), () => {
     90            WI.debuggerManager.setShouldBlackboxScript(sourceCode, !isBlackboxed);
     91        });
     92    }
     93
     94    contextMenu.appendSeparator();
     95
    8796    WI.appendContextMenuItemsForURL(contextMenu, sourceCode.url, {sourceCode, location});
    8897
  • trunk/Source/WebInspectorUI/UserInterface/Views/ShaderProgramTreeElement.css

    r248782 r249513  
    2424 */
    2525
    26 .item.shader-program .status > img {
     26 .tree-outline .item.shader-program .status > img {
    2727    width: 18px;
    2828    margin-top: 2px;
     
    3030}
    3131
    32 .item.shader-program.disabled:hover .status > img {
    33     content: url(../Images/Show.svg);
    34 }
    35 
    36 .item.shader-program:not(:hover, .selected, .disabled) .status > img {
     32.tree-outline .item.shader-program:not(:hover, .selected, .disabled) .status > img {
    3733    display: none;
    3834}
     
    4238}
    4339
    44 .item.shader-program.disabled > :not(.status) {
     40.tree-outline .item.shader-program.disabled .status > img {
    4541    opacity: 0.5;
    4642}
    4743
    4844@media (prefers-color-scheme: dark) {
    49     .item.shader-program .status > img {
     45    .tree-outline .item.shader-program .status > img {
    5046        filter: invert();
    5147    }
  • trunk/Source/WebInspectorUI/UserInterface/Views/ShaderProgramTreeElement.js

    r238599 r249513  
    4545        super.onattach();
    4646
     47        this.representedObject.addEventListener(WI.ShaderProgram.Event.DisabledChanged, this._handleShaderProgramDisabledChanged, this);
     48
    4749        this.element.addEventListener("mouseover", this._handleMouseOver.bind(this));
    4850        this.element.addEventListener("mouseout", this._handleMouseOut.bind(this));
    4951    }
    5052
     53    ondetach()
     54    {
     55        this.representedObject.removeEventListener(WI.ShaderProgram.Event.DisabledChanged, this._handleShaderProgramDisabledChanged, this);
     56
     57        super.ondetach();
     58    }
     59
    5160    canSelectOnMouseDown(event)
    5261    {
    53         return !this._statusElement.contains(event.target);
     62        if (this._disabledImageElement.contains(event.target))
     63            return false;
     64        return super.canSelectOnMouseDown(event);
     65    }
     66
     67    populateContextMenu(contextMenu, event)
     68    {
     69        let disabled = this.representedObject.disabled;
     70        contextMenu.appendItem(disabled ? WI.UIString("Enable Program") : WI.UIString("Disable Program"), () => {
     71            this.representedObject.disabled = !disabled;
     72        });
     73
     74        contextMenu.appendSeparator();
     75
     76        super.populateContextMenu(contextMenu, event);
    5477    }
    5578
     
    5881    _disabledImageElementClicked(event)
    5982    {
    60         this.representedObject.toggleDisabled(() => {
    61             this._listItemNode.classList.toggle("disabled", !!this.representedObject.disabled);
    62             this._disabledImageElement.title = this.representedObject.disabled ? WI.UIString("Enable Program") : WI.UIString("Disable Program");
    63         });
     83        this.representedObject.disabled = !this.representedObject.disabled;
     84    }
     85
     86    _handleShaderProgramDisabledChanged(event)
     87    {
     88        this._listItemNode.classList.toggle("disabled", !!this.representedObject.disabled);
     89        this._disabledImageElement.title = this.representedObject.disabled ? WI.UIString("Enable Program") : WI.UIString("Disable Program");
    6490    }
    6591
  • trunk/Source/WebInspectorUI/UserInterface/Views/SourceCodeTreeElement.css

    r249450 r249513  
    3131
    3232.tree-outline:not(.navigation-sidebar-panel-content-tree-outline) .item .status > .toggle-script-blackboxed,
    33 .tree-outline .item:not(:hover, .selected) .status > .toggle-script-blackboxed:not(.blackboxed) {
     33.tree-outline .item:not(:hover) .status > .toggle-script-blackboxed:not(.blackboxed) {
    3434    display: none;
    3535}
Note: See TracChangeset for help on using the changeset viewer.