Polish pane split drag and drop#670
Conversation
mehmetozguldev
left a comment
There was a problem hiding this comment.
Thanks, the shared pane-zone resolver and scoped overlay direction look good. I checked this on current master: merge is clean, typecheck passes, and the targeted
pane/tab tests plus lint pass.
One blocker before merging: the new Escape behavior is not applied to terminal tab drags. TabBar uses isDragAborted() and applyDropZoneGates(), but terminal- tab-bar.tsx still resolves the raw target zone and splits directly. That means Escape can show/suppress the hover state but terminal drops can still split, and the
double-Escape abort path can still detach the terminal.
Please route terminal tab drag end through the same drag gates/split config helpers as editor tab drag, or explicitly scope the Escape behavior away from terminal
drags.
|
Addressed review. Terminal tab drag end now goes through the same drag-gate and split-config helpers as editor tab drags, so single-Escape suppression and double-Escape abort both apply before split/drop handling. |
Route file-tree and tab drags through the same pane-zone resolver so the preview and final drop agree on the target pane. Support Escape during drag to force a no-split drop, with a second quick Escape aborting the drag entirely. Keep the split preview scoped to the editor surface so it never covers the tab bar, and remove the redundant drop paths and helper UI left from the polish pass.
- apply the same escape suppression and abort rules to terminal tab drops - let terminal drags attach to a pane without splitting after a single escape - stop double-escape from detaching a terminal after the drag was aborted
09860c1 to
d2000bb
Compare
Summary
Details
window.__fileDragDatafor pane drops.resolveDropTarget, which checks the element stack plus viewport containment so fixed drag previews do not steal the target pane.Validation
bun run typecheckbunx vp lint src/features/tabs/utils/internal-tab-drag.ts src/features/tabs/components/tab-bar.tsx src/features/panes/components/pane-container.tsx src/features/panes/components/split-drop-overlay.tsx src/features/file-explorer/hooks/use-file-explorer-drag-drop.ts src/features/layout/components/main-layout.tsxgit diff --check