Changeset 244278 in webkit
- Timestamp:
- Apr 15, 2019 11:58:27 AM (5 years ago)
- Location:
- trunk/Source/WebInspectorUI
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebInspectorUI/ChangeLog
r244275 r244278 1 2019-04-15 Devin Rousso <drousso@apple.com> 2 3 Web Inspector: drag/drop over the sidebar should load an imported file in Canvas/Audit tab 4 https://bugs.webkit.org/show_bug.cgi?id=196873 5 <rdar://problem/49858190> 6 7 Reviewed by Timothy Hatcher. 8 9 * UserInterface/Base/Main.js: 10 (WI.contentLoaded): 11 (WI._handleDragOver): Added. 12 (WI._handleDrop): Added. 13 (WI._dragOver): Deleted. 14 * UserInterface/Views/AuditTabContentView.js: 15 (WI.AuditTabContentView): 16 (WI.AuditTabContentView.prototype.async handleFileDrop): Added. 17 (WI.AuditTabContentView.prototype._handleDragOver): Deleted. 18 (WI.AuditTabContentView.prototype._handleDrop): Deleted. 19 * UserInterface/Views/CanvasTabContentView.js: 20 (WI.CanvasTabContentView): 21 (WI.CanvasTabContentView.prototype.async handleFileDrop): Added. 22 (WI.CanvasTabContentView.prototype._handleDragOver): Deleted. 23 (WI.CanvasTabContentView.prototype._handleDrop): Deleted. 24 * UserInterface/Views/TimelineTabContentView.js: 25 (WI.TimelineTabContentView.prototype.async handleFileDrop): Added. 26 Check whether the current tab is able to handle a file drop, and if so, don't prevent the 27 drag from occuring. This now allows the user to drop anywhere on the Web Inspector area to 28 import files, so long as the relevant tab is currently selected. 29 30 * UserInterface/Controllers/CanvasManager.js: 31 (WI.CanvasManager.prototype.async processJSON): Added. 32 (WI.CanvasManager.prototype.processJSON): Deleted. 33 * UserInterface/Controllers/TimelineManager.js: 34 (WI.TimelineManager.prototype.async processJSON): Added. 35 (WI.TimelineManager.prototype.processJSON): Deleted. 36 Make `async` to match other `processJSON` functions. 37 1 38 2019-04-15 Devin Rousso <drousso@apple.com> 2 39 -
trunk/Source/WebInspectorUI/UserInterface/Base/Main.js
r244266 r244278 272 272 273 273 document.addEventListener("click", WI._mouseWasClicked); 274 document.addEventListener("dragover", WI._dragOver); 274 document.addEventListener("dragover", WI._handleDragOver); 275 document.addEventListener("drop", WI._handleDrop); 275 276 document.addEventListener("focus", WI._focusChanged, true); 276 277 … … 1524 1525 }; 1525 1526 1526 WI._ dragOver = function(event)1527 WI._handleDragOver = function(event) 1527 1528 { 1528 1529 // Do nothing if another event listener handled the event already. … … 1534 1535 return; 1535 1536 1536 // Prevent the drop from being accepted. 1537 event.dataTransfer.dropEffect = "none"; 1537 let tabContentView = WI.tabBrowser.selectedTabContentView; 1538 if (!tabContentView || !tabContentView.handleFileDrop || !event.dataTransfer.types.includes("Files")) { 1539 // Prevent the drop from being accepted. 1540 event.dataTransfer.dropEffect = "none"; 1541 } 1542 1538 1543 event.preventDefault(); 1544 }; 1545 1546 WI._handleDrop = function(event) 1547 { 1548 // Do nothing if another event listener handled the event already. 1549 if (event.defaultPrevented) 1550 return; 1551 1552 // Allow dropping into editable areas. 1553 if (WI.isEventTargetAnEditableField(event)) 1554 return; 1555 1556 let tabContentView = WI.tabBrowser.selectedTabContentView; 1557 if (tabContentView && tabContentView.handleFileDrop && event.dataTransfer.files) { 1558 event.preventDefault(); 1559 1560 tabContentView.handleFileDrop(event.dataTransfer.files) 1561 .then(() => { 1562 event.dataTransfer.clearData(); 1563 }); 1564 } 1539 1565 }; 1540 1566 -
trunk/Source/WebInspectorUI/UserInterface/Controllers/CanvasManager.js
r243272 r244278 76 76 } 77 77 78 processJSON({filename, json, error})78 async processJSON({filename, json, error}) 79 79 { 80 80 if (error) { -
trunk/Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js
r244199 r244278 265 265 } 266 266 267 processJSON({filename, json, error})267 async processJSON({filename, json, error}) 268 268 { 269 269 if (error) { -
trunk/Source/WebInspectorUI/UserInterface/Views/AuditTabContentView.js
r240502 r244278 33 33 this._startStopShortcut.implicitlyPreventsDefault = false; 34 34 this._startStopShortcut.disabled = true; 35 36 this.element.addEventListener("dragover", this._handleDragOver.bind(this));37 this.element.addEventListener("drop", this._handleDrop.bind(this));38 35 } 39 36 … … 87 84 } 88 85 86 async handleFileDrop(files) 87 { 88 await WI.FileUtilities.readJSON(files, (result) => WI.auditManager.processJSON(result)); 89 } 90 89 91 // Protected 90 92 … … 112 114 event.preventDefault(); 113 115 } 114 115 _handleDragOver(event)116 {117 if (event.dataTransfer.types.includes("Files"))118 event.preventDefault();119 }120 121 _handleDrop(event)122 {123 if (!event.dataTransfer.files || !event.dataTransfer.files.length)124 return;125 126 event.preventDefault();127 128 WI.FileUtilities.readJSON(event.dataTransfer.files, (result) => WI.auditManager.processJSON(result))129 .then(() => {130 event.dataTransfer.clearData();131 });132 }133 116 }; 134 117 -
trunk/Source/WebInspectorUI/UserInterface/Views/CanvasTabContentView.js
r243272 r244278 57 57 this._recordSingleFrameShortcut.disabled = true; 58 58 59 this.element.addEventListener("dragover", this._handleDragOver.bind(this));60 this.element.addEventListener("drop", this._handleDrop.bind(this));61 62 59 WI.canvasManager.enable(); 63 60 } … … 140 137 { 141 138 // FIXME: implement once <https://webkit.org/b/177606> is complete. 139 } 140 141 async handleFileDrop(files) 142 { 143 await WI.FileUtilities.readJSON(files, (result) => WI.canvasManager.processJSON(result)); 142 144 } 143 145 … … 304 306 event.preventDefault(); 305 307 } 306 307 _handleDragOver(event)308 {309 if (event.dataTransfer.types.includes("Files"))310 event.preventDefault();311 }312 313 _handleDrop(event)314 {315 if (!event.dataTransfer.files || !event.dataTransfer.files.length)316 return;317 318 event.preventDefault();319 320 WI.FileUtilities.readJSON(event.dataTransfer.files, (result) => WI.canvasManager.processJSON(result))321 .then(() => {322 event.dataTransfer.clearData();323 });324 }325 308 }; 326 309 -
trunk/Source/WebInspectorUI/UserInterface/Views/TimelineTabContentView.js
r244195 r244278 344 344 } 345 345 346 async handleFileDrop(files) 347 { 348 await WI.FileUtilities.readJSON(files, (result) => WI.timelineManager.processJSON(result)); 349 } 350 346 351 // Protected 347 352
Note: See TracChangeset
for help on using the changeset viewer.