You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Removes WorkspaceAction::HandoffPendingTransfer, ReverseHandoff, and
FinalizeDropTab. The cross-window drag flow no longer routes through
WorkspaceAction; it is now coordinated through the upcoming
CrossWindowTabDrag singleton model.
hide window when dragging to target
fix unstable drop zone
render exact copy of tab
rendering consistency checkin
ghost state checkpoint
Fix crashes
Update view.rs
fix edge case issues around persistence and detachment
fix typo
integration: add tests for cross-window tab drag
Adds four end-to-end integration tests behind the new
drag_tabs_to_windows feature on the integration crate:
- test_reorder_tabs_with_drag
- test_detach_tab_to_new_window_with_drag
- test_attach_tab_to_other_window_and_continue_drag
- test_single_tab_handoff_continues_drag
Wires them into both the manual integration runner and the nextest
ui_tests! suite, and adds the matching feature passthrough in
crates/integration/Cargo.toml.
app_state: skip persistence during cross-window tab drag
While a cross-window tab drag is active, the dragged tab's pane group
is in flight between the source and preview windows. Both can briefly
claim the same terminal_panes.uuid, which trips SQLite's UNIQUE
constraint when persistence runs mid-drag.
Skip persistence entirely while CrossWindowTabDrag is active; the next
mouse-up or non-drag change will trigger a save. Also switches the
existing per-window workspace lookup to WorkspaceRegistry, mirroring
root_view, and uses the renamed is_tab_drag_preview() helper.
root_view: simplify after cross-window tab drag refactor
Removes the bespoke DetachTabImmediateArg / TabTransferInfo plumbing
and the root_view:detach_tab_immediate global action, both of which
existed only to support the old cross-window drag flow. Their
responsibilities now live in CrossWindowTabDrag and the workspace
view.
Updates create_transferred_window to take the TransferredTab and
window placement directly and return just the new WindowId, and
switches workspace_for_window to look up workspaces through
WorkspaceRegistry instead of scanning views_of_type::<Workspace>.
workspace view: integrate cross-window tab drag
Wires the workspace view into the new CrossWindowTabDrag singleton:
- Drives the drag state machine from on_drag/on_drop on tabs and the
tab bar.
- Exposes helpers (tab_bar_rects_for_window, TransferredTab,
TAB_BAR_POSITION_ID) that the singleton uses to coordinate hit
testing and view-tree transfers between windows.
- Renames is_drag_preview_workspace to is_tab_drag_preview to match
the new state model.
- Adjusts vertical-tab drag behavior so that when DragTabsToWindows is
enabled, vertical tabs can be dragged horizontally out of the panel
to detach into a new window. When the flag is off the existing
vertical-only constraint is preserved.
workspace: add CrossWindowTabDrag singleton model
Adds a new singleton model that owns all cross-window tab drag state
across the application. The model tracks the drag lifecycle through
three phases — Floating, InsertedInTarget, and Transitioning — and
exposes on_drag/on_drop entry points that workspace views call to drive
the state machine.
Two drag sources are supported:
- SingleTabWindow: the source window itself acts as the floating
preview.
- MultiTabWindow: a dedicated preview window is created for the tab.
Registers the singleton in workspace::init() so it is available
app-wide. The workspace view integration that actually exercises the
new APIs is added in a follow-up commit.
warpui: track window front-to-back ordering and add window bounds helper
Adds a WindowOrderingState to WindowManager so callers can find which
window is topmost at a given screen position, which is needed when
deciding where a dragged tab should land. Adds a matching
ordered_window_ids() API for both the production and integration-test
window managers.
Also adds AppContext::set_and_cache_window_bounds for callers that need
to move a window and update the cache atomically, and tweaks the macOS
window close path so force-terminated windows close immediately while
normal closes still go through performClose:.
Add tab dragging product and tech specs
Includes the original drag-tabs-to-windows PRODUCT.md and TECH.md, plus
follow-up TECH specs for fix-drag-drop, fix-dragging-out,
pane-uuid-collision-on-handoff, and put-back-plus-new-window-overlap.
Co-Authored-By: Oz <oz-agent@warp.dev>
0 commit comments