Changeset 247054 in webkit


Ignore:
Timestamp:
Jul 2, 2019 9:18:09 AM (5 years ago)
Author:
Devin Rousso
Message:

Web Inspector: Elements: allow nodes to be copied and pasted
https://bugs.webkit.org/show_bug.cgi?id=199182

Reviewed by Matt Baker.

Copy is already supported, so there's nothing that needs to be done there.

Pasting is as simple as calling insertAdjacentHTML("afterend", ...) on the selected node.

  • UserInterface/Base/Main.js:

(WI.contentLoaded):
(WI._paste): Added.

  • UserInterface/Views/DOMTreeContentView.js:

(WI.DOMTreeContentView.prototype.handlePasteEvent): Added.

Location:
trunk/Source/WebInspectorUI
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebInspectorUI/ChangeLog

    r247053 r247054  
     12019-07-02  Devin Rousso  <drousso@apple.com>
     2
     3        Web Inspector: Elements: allow nodes to be copied and pasted
     4        https://bugs.webkit.org/show_bug.cgi?id=199182
     5
     6        Reviewed by Matt Baker.
     7
     8        Copy is already supported, so there's nothing that needs to be done there.
     9
     10        Pasting is as simple as calling `insertAdjacentHTML("afterend", ...)` on the selected node.
     11
     12        * UserInterface/Base/Main.js:
     13        (WI.contentLoaded):
     14        (WI._paste): Added.
     15
     16        * UserInterface/Views/DOMTreeContentView.js:
     17        (WI.DOMTreeContentView.prototype.handlePasteEvent): Added.
     18
    1192019-07-02  Devin Rousso  <drousso@apple.com>
    220
  • trunk/Source/WebInspectorUI/UserInterface/Base/Main.js

    r247043 r247054  
    270270    document.addEventListener("beforecopy", WI._beforecopy);
    271271    document.addEventListener("copy", WI._copy);
     272    document.addEventListener("paste", WI._paste);
    272273
    273274    document.addEventListener("click", WI._mouseWasClicked);
     
    26212622};
    26222623
     2624WI._paste = function(event)
     2625{
     2626    let selection = window.getSelection();
     2627
     2628    // If there is no selection, pass the paste event on to the focused element or focused ContentView.
     2629    if (!selection.isCollapsed || WI.isEventTargetAnEditableField(event))
     2630        return;
     2631
     2632    let focusedPasteHandler = WI.currentFocusElement && WI.currentFocusElement.pasteHandler;
     2633    if (focusedPasteHandler && focusedPasteHandler.handlePasteEvent) {
     2634        focusedPasteHandler.handlePasteEvent(event);
     2635        if (event.defaultPrevented)
     2636            return;
     2637    }
     2638
     2639    let focusedContentView = WI._focusedContentView();
     2640    if (focusedContentView && focusedContentView.handlePasteEvent) {
     2641        focusedContentView.handlePasteEvent(event);
     2642        return;
     2643    }
     2644
     2645    let tabContentView = WI.tabBrowser.selectedTabContentView;
     2646    if (tabContentView && tabContentView.handlePasteEvent) {
     2647        tabContentView.handlePasteEvent(event);
     2648        return;
     2649    }
     2650};
     2651
    26232652WI._increaseZoom = function(event)
    26242653{
  • trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js

    r246176 r247054  
    252252    }
    253253
     254    handlePasteEvent(event)
     255    {
     256        let selectedDOMNode = this._domTreeOutline.selectedDOMNode();
     257        if (!selectedDOMNode)
     258            return;
     259
     260        let text = event.clipboardData.getData("text/plain");
     261        if (!text)
     262            return;
     263
     264        selectedDOMNode.insertAdjacentHTML("afterend", text);
     265    }
     266
    254267    get supportsSave()
    255268    {
Note: See TracChangeset for help on using the changeset viewer.