Changeset 247803 in webkit


Ignore:
Timestamp:
Jul 24, 2019, 5:42:23 PM (6 years ago)
Author:
Devin Rousso
Message:

Web Inspector: REGRESSION: no context menu items work when context menu clicking on "Add Breakpoint"
https://bugs.webkit.org/show_bug.cgi?id=199953

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/ContextMenuUtilities.js:

(WI.addMouseDownContextMenuHandlers): Added.
Create a helper function for managing elements that show a context menu on "mousedown".

  • UserInterface/Base/SearchUtilities.js:

(WI.SearchUtilities.createSettingsButton):

  • UserInterface/Views/CanvasContentView.js:

(WI.CanvasContentView.prototype.initialLayout):
(WI.CanvasContentView.prototype._populateCanvasElementButtonContextMenu): Added.
(WI.CanvasContentView.prototype._populateViewShaderButtonContextMenu): Added.
(WI.CanvasContentView.prototype._populateViewRecordingButtonContextMenu): Added.
(WI.CanvasContentView.prototype._handleCanvasElementButtonMouseDown): Deleted.
(WI.CanvasContentView.prototype._handleViewShaderButtonMouseDown): Deleted.
(WI.CanvasContentView.prototype._handleViewRecordingButtonMouseDown): Deleted.

  • UserInterface/Views/DebuggerSidebarPanel.js:

(WI.DebuggerSidebarPanel):
(WI.DebuggerSidebarPanel.prototype._populateCreateBreakpointContextMenu): Added.
(WI.DebuggerSidebarPanel.prototype._handleCreateBreakpointMouseDown): Deleted.

  • UserInterface/Views/SourcesNavigationSidebarPanel.js:

(WI.SourcesNavigationSidebarPanel):
(WI.SourcesNavigationSidebarPanel.prototype._populateResourceGroupingModeContextMenu): Added.
(WI.SourcesNavigationSidebarPanel.prototype._populateCreateBreakpointContextMenu): Added.
(WI.SourcesNavigationSidebarPanel.prototype._handleResourceGroupingModeMouseDown): Deleted.
(WI.SourcesNavigationSidebarPanel.prototype._handleCreateBreakpointMouseDown): Deleted.

  • UserInterface/Views/TabBar.js:

(WI.TabBar):
(WI.TabBar.prototype._handleTabPickerTabContextMenu): Deleted.

  • UserInterface/Views/LegacyTabBar.js:

(WI.LegacyTabBar):
(WI.LegacyTabBar.prototype._handleTabPickerTabContextMenu): Deleted.
Remove the "contextmenu" handler on the tab picker, as that's already used by the entire
tab bar to show/hide tabs.

Location:
trunk/Source/WebInspectorUI
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebInspectorUI/ChangeLog

    r247790 r247803  
     12019-07-24  Devin Rousso  <drousso@apple.com>
     2
     3        Web Inspector: REGRESSION: no context menu items work when context menu clicking on "Add Breakpoint"
     4        https://bugs.webkit.org/show_bug.cgi?id=199953
     5
     6        Reviewed by Joseph Pecoraro.
     7
     8        * UserInterface/Views/ContextMenuUtilities.js:
     9        (WI.addMouseDownContextMenuHandlers): Added.
     10        Create a helper function for managing elements that show a context menu on "mousedown".
     11
     12        * UserInterface/Base/SearchUtilities.js:
     13        (WI.SearchUtilities.createSettingsButton):
     14        * UserInterface/Views/CanvasContentView.js:
     15        (WI.CanvasContentView.prototype.initialLayout):
     16        (WI.CanvasContentView.prototype._populateCanvasElementButtonContextMenu): Added.
     17        (WI.CanvasContentView.prototype._populateViewShaderButtonContextMenu): Added.
     18        (WI.CanvasContentView.prototype._populateViewRecordingButtonContextMenu): Added.
     19        (WI.CanvasContentView.prototype._handleCanvasElementButtonMouseDown): Deleted.
     20        (WI.CanvasContentView.prototype._handleViewShaderButtonMouseDown): Deleted.
     21        (WI.CanvasContentView.prototype._handleViewRecordingButtonMouseDown): Deleted.
     22        * UserInterface/Views/DebuggerSidebarPanel.js:
     23        (WI.DebuggerSidebarPanel):
     24        (WI.DebuggerSidebarPanel.prototype._populateCreateBreakpointContextMenu): Added.
     25        (WI.DebuggerSidebarPanel.prototype._handleCreateBreakpointMouseDown): Deleted.
     26        * UserInterface/Views/SourcesNavigationSidebarPanel.js:
     27        (WI.SourcesNavigationSidebarPanel):
     28        (WI.SourcesNavigationSidebarPanel.prototype._populateResourceGroupingModeContextMenu): Added.
     29        (WI.SourcesNavigationSidebarPanel.prototype._populateCreateBreakpointContextMenu): Added.
     30        (WI.SourcesNavigationSidebarPanel.prototype._handleResourceGroupingModeMouseDown): Deleted.
     31        (WI.SourcesNavigationSidebarPanel.prototype._handleCreateBreakpointMouseDown): Deleted.
     32
     33        * UserInterface/Views/TabBar.js:
     34        (WI.TabBar):
     35        (WI.TabBar.prototype._handleTabPickerTabContextMenu): Deleted.
     36        * UserInterface/Views/LegacyTabBar.js:
     37        (WI.LegacyTabBar):
     38        (WI.LegacyTabBar.prototype._handleTabPickerTabContextMenu): Deleted.
     39        Remove the "contextmenu" handler on the tab picker, as that's already used by the entire
     40        tab bar to show/hide tabs.
     41
    1422019-07-24  Devin Rousso  <drousso@apple.com>
    243
  • trunk/Source/WebInspectorUI/UserInterface/Base/SearchUtilities.js

    r242937 r247803  
    7373        console.assert(!isEmptyObject(settings));
    7474
    75         let ignoreMouseDown = false;
    76 
    7775        let button = document.createElement("button");
    78         button.addEventListener("mousedown", (event) => {
    79             event.stop();
    80 
    81             if (ignoreMouseDown)
    82                 return;
    83 
    84             ignoreMouseDown = true;
    85 
    86             let contextMenu = WI.ContextMenu.createFromEvent(event);
    87             contextMenu.addBeforeShowCallback(() => {
    88                 ignoreMouseDown = false;
    89             });
    90 
     76        button.classList.add("search-settings");
     77        button.tabIndex = -1;
     78        WI.addMouseDownContextMenuHandlers(button, (contextMenu) => {
    9179            if (settings.caseSensitive) {
    9280                contextMenu.appendCheckboxItem(WI.UIString("Case Sensitive", "Case Sensitive @ Context Menu", "Context menu label for whether searches should be case sensitive."), () => {
     
    10088                }, settings.regularExpression.value);
    10189            }
    102 
    103             contextMenu.show();
    10490        });
    105         button.classList.add("search-settings");
    106         button.tabIndex = -1;
    10791
    10892        button.appendChild(WI.ImageUtilities.useSVGSymbol("Images/Gear.svg", "glyph"));
  • trunk/Source/WebInspectorUI/UserInterface/Views/CanvasContentView.js

    r244908 r247803  
    114114            let canvasElementButtonNavigationItem = new WI.ButtonNavigationItem("canvas-element", WI.UIString("Canvas Element"), "Images/Markup.svg", 16, 16);
    115115            canvasElementButtonNavigationItem.visibilityPriority = WI.NavigationItem.VisibilityPriority.Low;
    116             canvasElementButtonNavigationItem.element.addEventListener("mousedown", this._handleCanvasElementButtonMouseDown.bind(this));
     116            WI.addMouseDownContextMenuHandlers(canvasElementButtonNavigationItem.element, this._populateCanvasElementButtonContextMenu.bind(this));
    117117            navigationBar.addNavigationItem(canvasElementButtonNavigationItem);
    118118
     
    135135            this._viewShaderButton.classList.add("view-shader");
    136136            this._viewShaderButton.title = WI.UIString("View Shader");
    137             this._viewShaderButton.addEventListener("mousedown", this._handleViewShaderButtonMouseDown.bind(this));
     137            WI.addMouseDownContextMenuHandlers(this._viewShaderButton, this._populateViewShaderButtonContextMenu.bind(this));
    138138
    139139            this._viewRecordingButton = document.createElement("img");
    140140            this._viewRecordingButton.classList.add("view-recording");
    141141            this._viewRecordingButton.title = WI.UIString("View Recording");
    142             this._viewRecordingButton.addEventListener("mousedown", this._handleViewRecordingButtonMouseDown.bind(this));
     142            WI.addMouseDownContextMenuHandlers(this._viewRecordingButton, this._populateViewRecordingButtonContextMenu.bind(this));
    143143
    144144            this._updateViewRelatedItems();
     
    291291    }
    292292
    293     _handleCanvasElementButtonMouseDown(event)
    294     {
    295         if (this._ignoreCanvasElementButtonMouseDown)
    296             return;
    297 
    298         this._ignoreCanvasElementButtonMouseDown = true;
    299 
    300         let contextMenu = WI.ContextMenu.createFromEvent(event);
    301         contextMenu.addBeforeShowCallback(() => {
    302             this._ignoreCanvasElementButtonMouseDown = false;
    303         });
    304 
     293    _populateCanvasElementButtonContextMenu(contextMenu)
     294    {
    305295        if (this._canvasNode)
    306296            WI.appendContextMenuItemsForDOMNode(contextMenu, this._canvasNode);
     
    318308            });
    319309        });
    320 
    321         contextMenu.show();
    322310    }
    323311
     
    406394    }
    407395
    408     _handleViewShaderButtonMouseDown(event)
    409     {
    410         if (this._ignoreViewShaderButtonMouseDown)
    411             return;
    412 
     396    _populateViewShaderButtonContextMenu(contextMenu, event)
     397    {
    413398        let shaderPrograms = this.representedObject.shaderProgramCollection;
    414399        console.assert(shaderPrograms.size);
     
    416401            return;
    417402
    418         if (shaderPrograms.size === 1) {
     403        if (event.button === 0 && shaderPrograms.size === 1) {
    419404            WI.showRepresentedObject(Array.from(shaderPrograms)[0]);
    420405            return;
    421406        }
    422 
    423         this._ignoreViewShaderButtonMouseDown = true;
    424 
    425         let contextMenu = WI.ContextMenu.createFromEvent(event);
    426         contextMenu.addBeforeShowCallback(() => {
    427             this._ignoreViewShaderButtonMouseDown = false;
    428         });
    429407
    430408        for (let shaderProgram of shaderPrograms) {
     
    433411            });
    434412        }
    435 
    436         contextMenu.show();
    437     }
    438 
    439     _handleViewRecordingButtonMouseDown(event)
    440     {
    441         if (this._ignoreViewRecordingButtonMouseDown)
    442             return;
    443 
     413    }
     414
     415    _populateViewRecordingButtonContextMenu(contextMenu, event)
     416    {
    444417        let recordings = this.representedObject.recordingCollection;
    445418        console.assert(recordings.size);
     
    447420            return;
    448421
    449         if (recordings.size === 1) {
     422        if (event.button === 0 && recordings.size === 1) {
    450423            WI.showRepresentedObject(Array.from(recordings)[0]);
    451424            return;
    452425        }
    453 
    454         this._ignoreViewRecordingButtonMouseDown = true;
    455 
    456         let contextMenu = WI.ContextMenu.createFromEvent(event);
    457         contextMenu.addBeforeShowCallback(() => {
    458             this._ignoreViewRecordingButtonMouseDown = false;
    459         });
    460426
    461427        for (let recording of recordings) {
     
    464430            });
    465431        }
    466 
    467         contextMenu.show();
    468432    }
    469433};
  • trunk/Source/WebInspectorUI/UserInterface/Views/ContextMenuUtilities.js

    r247053 r247803  
    2424 */
    2525
     26WI.addMouseDownContextMenuHandlers = function(element, populateContextMenuCallback)
     27{
     28    let ignoreMouseDown = false;
     29    element.addEventListener("mousedown", (event) => {
     30        if (event.button !== 0)
     31            return;
     32
     33        event.stop();
     34
     35        if (ignoreMouseDown)
     36            return;
     37
     38        ignoreMouseDown = true;
     39
     40        let contextMenu = WI.ContextMenu.createFromEvent(event);
     41        contextMenu.addBeforeShowCallback(() => {
     42            ignoreMouseDown = false;
     43        });
     44
     45        populateContextMenuCallback(contextMenu, event);
     46
     47        contextMenu.show();
     48    });
     49
     50    element.addEventListener("contextmenu", (event) => {
     51        let contextMenu = WI.ContextMenu.createFromEvent(event);
     52        populateContextMenuCallback(contextMenu, event);
     53    });
     54};
     55
    2656WI.appendContextMenuItemsForSourceCode = function(contextMenu, sourceCodeOrLocation)
    2757{
  • trunk/Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js

    r247253 r247803  
    158158
    159159        this._createBreakpointButton = new WI.ButtonNavigationItem("create-breakpoint", WI.UIString("Create Breakpoint"), "Images/Plus13.svg", 13, 13);
    160         this._createBreakpointButton.element.addEventListener("mousedown", this._handleCreateBreakpointMouseDown.bind(this));
     160        WI.addMouseDownContextMenuHandlers(this._createBreakpointButton.element, this._populateCreateBreakpointContextMenu.bind(this));
    161161        breakpointNavigationBar.addNavigationItem(this._createBreakpointButton);
    162162
     
    14651465    }
    14661466
    1467     _handleCreateBreakpointMouseDown(event)
    1468     {
    1469         if (this._ignoreCreateBreakpointMouseDown)
    1470             return;
    1471 
    1472         this._ignoreCreateBreakpointMouseDown = true;
    1473 
    1474         let contextMenu = WI.ContextMenu.createFromEvent(event);
    1475         contextMenu.addBeforeShowCallback(() => {
    1476             this._ignoreCreateBreakpointMouseDown = false;
    1477         });
    1478 
     1467    _populateCreateBreakpointContextMenu(contextMenu)
     1468    {
    14791469        // COMPATIBILITY (iOS 10): DebuggerAgent.setPauseOnAssertions did not exist yet.
    14801470        if (InspectorBackend.domains.Debugger.setPauseOnAssertions) {
     
    15171507            });
    15181508        }
    1519 
    1520         contextMenu.show();
    15211509    }
    15221510};
  • trunk/Source/WebInspectorUI/UserInterface/Views/LegacyTabBar.js

    r242937 r247803  
    5656        this._tabPickerTabBarItem = new WI.PinnedTabBarItem("Images/TabPicker.svg", WI.UIString("Show hidden tabs"));
    5757        this._tabPickerTabBarItem.element.classList.add("tab-picker");
    58         this._tabPickerTabBarItem.element.addEventListener("contextmenu", this._handleTabPickerTabContextMenu.bind(this));
    5958        this.addTabBarItem(this._tabPickerTabBarItem, {suppressAnimations: true});
    6059    }
     
    851850    }
    852851
    853     _handleTabPickerTabContextMenu(event)
    854     {
    855         if (!this._hiddenTabBarItems.length)
    856             return;
    857 
    858         let contextMenu = WI.ContextMenu.createFromEvent(event);
    859         for (let item of this._hiddenTabBarItems) {
    860             contextMenu.appendItem(item.title, () => {
    861                 this.selectedTabBarItem = item;
    862             });
    863         }
    864     }
    865 
    866852    _handleNewTabMouseEnter(event)
    867853    {
  • trunk/Source/WebInspectorUI/UserInterface/Views/SourcesNavigationSidebarPanel.js

    r247253 r247803  
    189189
    190190        this._createBreakpointButton = new WI.ButtonNavigationItem("create-breakpoint", WI.UIString("Create Breakpoint"), "Images/Plus13.svg", 13, 13);
    191         this._createBreakpointButton.element.addEventListener("mousedown", this._handleCreateBreakpointMouseDown.bind(this));
     191        WI.addMouseDownContextMenuHandlers(this._createBreakpointButton.element, this._populateCreateBreakpointContextMenu.bind(this));
    192192        breakpointNavigationBar.addNavigationItem(this._createBreakpointButton);
    193193
     
    220220        let resourceGroupingModeNavigationItem = new WI.ButtonNavigationItem("grouping-mode", WI.UIString("Grouping Mode"), "Images/Gear.svg", 15, 15);
    221221        resourceGroupingModeNavigationItem.visibilityPriority = WI.NavigationItem.VisibilityPriority.Low;
    222         resourceGroupingModeNavigationItem.element.addEventListener("mousedown", this._handleResourceGroupingModeMouseDown.bind(this));
     222        WI.addMouseDownContextMenuHandlers(resourceGroupingModeNavigationItem.element, this._populateResourceGroupingModeContextMenu.bind(this));
    223223        this._resourcesNavigationBar.addNavigationItem(resourceGroupingModeNavigationItem);
    224224
     
    14001400    }
    14011401
    1402     _handleResourceGroupingModeMouseDown(event)
    1403     {
    1404         if (this._ignoreResourceGroupingModeMouseDown)
    1405             return;
    1406 
    1407         this._ignoreResourceGroupingModeMouseDown = true;
    1408 
    1409         let contextMenu = WI.ContextMenu.createFromEvent(event);
    1410         contextMenu.addBeforeShowCallback(() => {
    1411             this._ignoreResourceGroupingModeMouseDown = false;
    1412         });
    1413 
     1402    _populateResourceGroupingModeContextMenu(contextMenu)
     1403    {
    14141404        function addOption(mode, label) {
    14151405            contextMenu.appendCheckboxItem(label, () => {
     
    14191409        addOption(WI.Resource.GroupingMode.Path, WI.UIString("Group by Path"));
    14201410        addOption(WI.Resource.GroupingMode.Type, WI.UIString("Group by Type"));
    1421 
    1422         contextMenu.show();
    14231411    }
    14241412
     
    15191507    }
    15201508
    1521     _handleCreateBreakpointMouseDown(event)
    1522     {
    1523         if (this._ignoreCreateBreakpointMouseDown)
    1524             return;
    1525 
    1526         this._ignoreCreateBreakpointMouseDown = true;
    1527 
    1528         let contextMenu = WI.ContextMenu.createFromEvent(event);
    1529         contextMenu.addBeforeShowCallback(() => {
    1530             this._ignoreCreateBreakpointMouseDown = false;
    1531         });
    1532 
     1509    _populateCreateBreakpointContextMenu(contextMenu)
     1510    {
    15331511        // COMPATIBILITY (iOS 10): DebuggerAgent.setPauseOnAssertions did not exist yet.
    15341512        if (InspectorBackend.domains.Debugger.setPauseOnAssertions) {
     
    15711549            });
    15721550        }
    1573 
    1574         contextMenu.show();
    15751551    }
    15761552
  • trunk/Source/WebInspectorUI/UserInterface/Views/TabBar.js

    r242937 r247803  
    4949        this._tabPickerTabBarItem = new WI.PinnedTabBarItem("Images/TabPicker.svg", WI.UIString("Show hidden tabs"));
    5050        this._tabPickerTabBarItem.element.classList.add("tab-picker", "hidden");
    51         this._tabPickerTabBarItem.element.addEventListener("contextmenu", this._handleTabPickerTabContextMenu.bind(this));
    5251        this.addTabBarItem(this._tabPickerTabBarItem, {suppressAnimations: true});
    5352    }
     
    811810        }
    812811    }
    813 
    814     _handleTabPickerTabContextMenu(event)
    815     {
    816         if (!this._hiddenTabBarItems.length)
    817             return;
    818 
    819         let contextMenu = WI.ContextMenu.createFromEvent(event);
    820         for (let item of this._hiddenTabBarItems) {
    821             contextMenu.appendItem(item.title, () => {
    822                 this.selectedTabBarItem = item;
    823             });
    824         }
    825     }
    826812};
    827813
Note: See TracChangeset for help on using the changeset viewer.