Expand description
Layout-tree + pending-action writers used by the tear-off / promote /
redock handlers. SPEC_864 Phase 3/4 — all of them route through the
reducer (seed_layout_via_reducer / queue_layout_actions_via_reducer);
nothing here writes mstore directly anymore.
setup_torn_off_block_layout is re-exported crate-wide (the pane
app-API uses it).
Functions§
- queue_
source_ 🔒layout_ delete - Phase E.5.5 — append a layout-delete action to the source tab’s
LayoutState.pendingbackendactionsso the source window’s frontend tears the moved block out of its layout tree on next poll. Used by the TearOffBlock/PromoteBlockToTab/RedockFloatingPane RPC handlers (the wcore-directtear_off_blockthis used to mirror was dead code, deleted in SPEC_864 Phase 5). - queue_
target_ 🔒layout_ insert - Floating-pane re-dock — enqueue an “insert” action on the TARGET
tab’s
LayoutState.pendingbackendactionsso the target window’s frontend adds a new leaf for the redocked block through itsLayoutTreeActionType.InsertNodereducer pathway. - queue_
target_ 🔒layout_ split - Phase 4b/4c — enqueue a directional split action on the TARGET tab’s
LayoutState.pendingbackendactionsso the redocked block lands in the exact slot the ghost overlay previewed. - queue_
target_ 🔒stack_ move - Tell the frontend that
block_idwas moved — already, in the reducer — topositionrelative totarget_block_id(Command::LayoutStackMove): a same-pane reorder when both are already in one leaf’s stack, otherwise a cross-pane move. MatchesLayoutTreeActionType.StackMove = "stackmove"infrontend/layout/lib/types.ts.positionis the same"before"/"after"/"end"stringpane.moveTab’s caller supplied — reused verbatim, not re-derived, so the frontend applies the identical operation rather than inferring it from resulting tree state.activaterides onLayoutActionData.focused— the same fieldqueue_target_stack_pushabove already overloads for this purpose (that call hardcodestrue, sinceCreateBlockInStackalways activates; this one carries the caller’s actualactivatevalue since a reorder may or may not). SPEC_PANE_TAB_DRAG_AND_DROP_2026_09_19.md §4.1, Phase 3. - queue_
target_ 🔒stack_ push - Tell the frontend that
block_idwas added — already, in the reducer — as the visible tab of the pane holdingtarget_block_id(Command::CreateBlockInStack). MatchesLayoutTreeActionType.StackPush = "stackpush"infrontend/layout/lib/types.ts. SPEC_PANE_TABS_REDUCER_COMMANDS_2026_09_18.md §3.3. - setup_
torn_ 🔒off_ block_ layout - Phase E.5.5 — set up the layout tree for a tab that just received
its first block via the TearOffBlock saga. Called from the
TearOffBlock / PromoteBlockToTab handlers and the floating
pane.openpath after the saga’s reducer-state portion (CreateTab + MoveBlock) completes. (NOT RedockFloatingPane — that redocks into an EXISTING tab and goes throughqueue_target_layout_insert/_splitinstead; reagent P2 on #1971.) - source_
delete_ 🔒action - The frontend
deleteaction for one block: its handler removes just that stack member (the leaf goes with the last one) and never runscloseNode.