microsoft / vscode

Visual Studio Code
https://code.visualstudio.com
MIT License
160.22k stars 28.06k forks source link

[Bug] Drag and Drop files onto extensions also opens the file inside the default application for that file type #218626

Open swordensen opened 6 days ago

swordensen commented 6 days ago

Type: Bug

  1. clone repo https://github.com/maxbublik/vscode-customeditor-drop
  2. press f5 to demo repo
  3. drag and drop any file into the extension editor while holding shift

Notes: I am primarily creating this issue to track the bug I made with https://github.com/microsoft/vscode/pull/209211

VS Code version: Code - OSS Dev 1.91.0 (Commit unknown, Date unknown) OS version: Windows_NT x64 10.0.22631 Modes:

System Info |Item|Value| |---|---| |CPUs|AMD Ryzen 7 5800X 8-Core Processor (16 x 3800)| |GPU Status|2d_canvas: enabled
canvas_oop_rasterization: enabled_on
direct_rendering_display_compositor: disabled_off_ok
gpu_compositing: enabled
multiple_raster_threads: enabled_on
opengl: enabled_on
rasterization: enabled
raw_draw: disabled_off_ok
skia_graphite: disabled_off
video_decode: enabled
video_encode: enabled
vulkan: disabled_off
webgl: enabled
webgl2: enabled
webgpu: enabled| |Load (avg)|undefined| |Memory (System)|31.93GB (20.85GB free)| |Process Argv|. --disable-extension=vscode.vscode-api-tests| |Screen Reader|no| |VM|50%|
Extensions disabled https://github.com/microsoft/vscode/assets/21202515/31579895-e05b-4a5c-9b0e-ddfbc2cf19d5
VSCodeTriageBot commented 6 days ago

Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.90.2. Please try upgrading to the latest version and checking whether this issue remains.

Happy Coding!

swordensen commented 6 days ago

My plan is to bubble up the "drop" event like I did with the "drag" event and prevent default in the webviewDragAndDrop setting.

However, I think it should be noted that extension developers can prevent default on their own and prevent the files from opening.

I'm not 100% sure if VSCode should assume that responsibility or not but I'll make the PR anyways once I verify that my idea works. Probably this weekend when I have time!

swordensen commented 5 days ago

I didn't need to bubble up the event since VSCode doesn't need to do anything with the drop event. I simply prevented default within the extension iframe html.