Changeset 244946 in webkit


Ignore:
Timestamp:
May 3, 2019 7:45:08 PM (5 years ago)
Author:
Devin Rousso
Message:

Web Inspector: DOM: dragging a node to the console should log the node
https://bugs.webkit.org/show_bug.cgi?id=197330

Reviewed by Timothy Hatcher.

  • UserInterface/Views/DOMTreeOutline.js:

(WI.DOMTreeOutline.prototype._ondragstart):

  • UserInterface/Views/LogContentView.js:

(WI.LogContentView):
(WI.LogContentView.prototype._handleDragOver): Added.
(WI.LogContentView.prototype._handleDrop): Added.

  • UserInterface/Views/QuickConsole.js:

(WI.QuickConsole):
(WI.QuickConsole.prototype._handleDragOver): Added.
(WI.QuickConsole.prototype._handleDrop): Added.

  • UserInterface/Views/GeneralStyleDetailsSidebarPanel.js:

Drive-by: update the format to be more unique.

  • Localizations/en.lproj/localizedStrings.js:
Location:
trunk/Source/WebInspectorUI
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebInspectorUI/ChangeLog

    r244933 r244946  
     12019-05-03  Devin Rousso  <drousso@apple.com>
     2
     3        Web Inspector: DOM: dragging a node to the console should log the node
     4        https://bugs.webkit.org/show_bug.cgi?id=197330
     5
     6        Reviewed by Timothy Hatcher.
     7
     8        * UserInterface/Views/DOMTreeOutline.js:
     9        (WI.DOMTreeOutline.prototype._ondragstart):
     10        * UserInterface/Views/LogContentView.js:
     11        (WI.LogContentView):
     12        (WI.LogContentView.prototype._handleDragOver): Added.
     13        (WI.LogContentView.prototype._handleDrop): Added.
     14        * UserInterface/Views/QuickConsole.js:
     15        (WI.QuickConsole):
     16        (WI.QuickConsole.prototype._handleDragOver): Added.
     17        (WI.QuickConsole.prototype._handleDrop): Added.
     18
     19        * UserInterface/Views/GeneralStyleDetailsSidebarPanel.js:
     20        Drive-by: update the format to be more unique.
     21
     22        * Localizations/en.lproj/localizedStrings.js:
     23
    1242019-05-03  Devin Rousso  <drousso@apple.com>
    225
  • trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js

    r244933 r244946  
    349349localizedStrings["Download"] = "Download";
    350350localizedStrings["Download Web Archive"] = "Download Web Archive";
     351localizedStrings["Dropped Element"] = "Dropped Element";
     352localizedStrings["Dropped Node"] = "Dropped Node";
    351353localizedStrings["Duplicate property"] = "Duplicate property";
    352354localizedStrings["Duration"] = "Duration";
  • trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js

    r244435 r244946  
    486486            return false;
    487487
     488        event.dataTransfer.effectAllowed = "copyMove";
     489        event.dataTransfer.setData(DOMTreeOutline.DOMNodeIdDragType, treeElement.representedObject.id);
     490
    488491        if (!this._isValidDragSourceOrTarget(treeElement))
    489492            return false;
     
    493496
    494497        event.dataTransfer.setData("text/plain", treeElement.listItemElement.textContent);
    495         event.dataTransfer.effectAllowed = "copyMove";
    496498        this._nodeBeingDragged = treeElement.representedObject;
    497499
     
    649651    SelectedNodeChanged: "dom-tree-outline-selected-node-changed"
    650652};
     653
     654WI.DOMTreeOutline.DOMNodeIdDragType = "web-inspector/dom-node-id";
  • trunk/Source/WebInspectorUI/UserInterface/Views/GeneralStyleDetailsSidebarPanel.js

    r243964 r244946  
    464464
    465465WI.GeneralStyleDetailsSidebarPanel.ToggledClassesSymbol = Symbol("css-style-details-sidebar-panel-toggled-classes-symbol");
    466 WI.GeneralStyleDetailsSidebarPanel.ToggledClassesDragType = "text/classname";
     466WI.GeneralStyleDetailsSidebarPanel.ToggledClassesDragType = "web-inspector/css-class";
  • trunk/Source/WebInspectorUI/UserInterface/Views/LogContentView.js

    r243355 r244946  
    4848        this.messagesElement.addEventListener("keypress", this._keyPress.bind(this));
    4949        this.messagesElement.addEventListener("dragstart", this._ondragstart.bind(this), true);
     50        this.messagesElement.addEventListener("dragover", this._handleDragOver.bind(this));
     51        this.messagesElement.addEventListener("drop", this._handleDrop.bind(this));
    5052        this.element.appendChild(this.messagesElement);
    5153
     
    616618            event.stopPropagation();
    617619            event.preventDefault();
     620        }
     621    }
     622
     623    _handleDragOver(event)
     624    {
     625        if (event.dataTransfer.types.includes(WI.DOMTreeOutline.DOMNodeIdDragType)) {
     626            event.preventDefault();
     627            event.dataTransfer.dropEffect = "copy";
     628        }
     629    }
     630
     631    _handleDrop(event)
     632    {
     633        let domNodeId = event.dataTransfer.getData(WI.DOMTreeOutline.DOMNodeIdDragType);
     634        if (domNodeId) {
     635            event.preventDefault();
     636
     637            let domNode = WI.domManager.nodeForId(domNodeId);
     638            WI.RemoteObject.resolveNode(domNode, WI.RuntimeManager.ConsoleObjectGroup)
     639            .then((remoteObject) => {
     640                let text = domNode.nodeType() === Node.ELEMENT_NODE ? WI.UIString("Dropped Element") : WI.UIString("Dropped Node");
     641                const addSpecialUserLogClass = true;
     642                WI.consoleLogViewController.appendImmediateExecutionWithResult(text, remoteObject, addSpecialUserLogClass);
     643
     644                this.prompt.focus();
     645            });
    618646        }
    619647    }
  • trunk/Source/WebInspectorUI/UserInterface/Views/QuickConsole.js

    r244566 r244946  
    4747        this.element.classList.add("quick-console");
    4848        this.element.addEventListener("mousedown", this._handleMouseDown.bind(this));
     49        this.element.addEventListener("dragover", this._handleDragOver.bind(this));
     50        this.element.addEventListener("drop", this._handleDrop.bind(this), true); // Ensure that dropping a DOM node doesn't copy text.
    4951
    5052        this.prompt = new WI.ConsolePrompt(null, "text/javascript");
     
    170172        event.preventDefault();
    171173        this.prompt.focus();
     174    }
     175
     176    _handleDragOver(event)
     177    {
     178        if (event.dataTransfer.types.includes(WI.DOMTreeOutline.DOMNodeIdDragType)) {
     179            event.preventDefault();
     180            event.dataTransfer.dropEffect = "copy";
     181        }
     182    }
     183
     184    _handleDrop(event)
     185    {
     186        let domNodeId = event.dataTransfer.getData(WI.DOMTreeOutline.DOMNodeIdDragType);
     187        if (domNodeId) {
     188            event.preventDefault();
     189
     190            let domNode = WI.domManager.nodeForId(domNodeId);
     191            WI.RemoteObject.resolveNode(domNode, WI.RuntimeManager.ConsoleObjectGroup)
     192            .then((remoteObject) => {
     193                let text = domNode.nodeType() === Node.ELEMENT_NODE ? WI.UIString("Dropped Element") : WI.UIString("Dropped Node");
     194                const addSpecialUserLogClass = true;
     195                WI.consoleLogViewController.appendImmediateExecutionWithResult(text, remoteObject, addSpecialUserLogClass);
     196
     197                this.prompt.focus();
     198            });
     199        }
    172200    }
    173201
Note: See TracChangeset for help on using the changeset viewer.