Repository navigation
2453: add cross-window panel dnd - #2454
Open
the-nelsonator wants to merge 2 commits into
Open
the-nelsonator wants to merge 2 commits into
the-nelsonator wants to merge 2 commits into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #2453
Summary
Right now, you can only drag a panel into the tabs section to open its tabs in that panel.
This PR adds cross-window panel drag-and-drop: dragging a tabs-panel nav button from one browser window's panel section onto another window's panel section.
Also fixes an existing bug where the dnd line between panels (previously unfunctional) would only show on the left when the target window has only one panel. Now that it's functional it matters so was fixed.
Demo
Screen.Recording.2026-09-10.200412.mp4
Key decisions:
Changes
tabs.fg.move.ts: added movePanelTabsToThisWin(); fixed a latent detachTabs bug where recalcVisibleTabs was gated on probeTab.pinned instead of the batch actually containing normal tabs.bar.navigation.vue: panel drag payload now includes panel-scoped pinned tabs (pinned-first ordering, load-bearing for downstream browser.tabs.move calls); fixed a pre-existing implicit-any[] type issue on contentList exposed by refactoring the push logic into a closure.drag-and-drop.fg.ts: new branch — external panel drop onto any nav-bar target activates/un-hides the panel then moves its tabs (splitting copy-mode and cross-incognito into Tabs.open/Tabs.reopen, deliberately skipping dropTabCtx re-containerization since tabs are already legitimately in P); snapshotted srcIndex/srcPanelId/dropMode before the first await since a 150ms-delayed stopDrag broadcast can reset shared DnD state mid-handler; guarded the existing panel→tab-list path so newly-included pinned items don't get silently unpinned there; nav-reorder now runs after the tab move (ordering is load-bearing — moveNavItem's updateSidebar re-sorts native tab order and would otherwise race the panel move).