Dropping a file while a tool (Split, Compress, Protect, etc.) is open opens a full-screen PDF preview instead of loading the file into that tool. A single window-level drop handler catches every drop on the page and routes it to the preview, no matter which tool is open.
Steps to reproduce
- Open the web app and go to a tool, for example Split (
/#/split).
- Drag a PDF from the file manager and drop it on the tool.
- Expected: the PDF loads into the tool.
- Actual: a full-screen preview opens and the tool stays empty.
On Merge (/#/merge) a drop both adds the file and opens the preview at the same time (a double trigger).
Root cause
handleGlobalDrop in App.tsx (wired to a window drop listener in Layout.tsx) sets droppedFile, which renders <PdfPreview>. Tool pages have no local dropzone, so every drop bubbles up to it. MergeTool's dropzone calls preventDefault() but not stopPropagation(), so the drop reaches the global handler as well.
Screenshots

Dropping a file while a tool (Split, Compress, Protect, etc.) is open opens a full-screen PDF preview instead of loading the file into that tool. A single window-level drop handler catches every drop on the page and routes it to the preview, no matter which tool is open.
Steps to reproduce
/#/split).On Merge (
/#/merge) a drop both adds the file and opens the preview at the same time (a double trigger).Root cause
handleGlobalDropinApp.tsx(wired to awindowdroplistener inLayout.tsx) setsdroppedFile, which renders<PdfPreview>. Tool pages have no local dropzone, so every drop bubbles up to it. MergeTool's dropzone callspreventDefault()but notstopPropagation(), so the drop reaches the global handler as well.Screenshots