diff options
| author | user <user@clank> | 2026-08-11 20:26:57 +0200 |
|---|---|---|
| committer | user <user@clank> | 2026-08-11 20:26:57 +0200 |
| commit | 77818ea9b24eb5d1a57f85b94aedc7bba7cbe8b1 (patch) | |
| tree | b3a2f85123459fc7bb8016401c1c585c523b628d /src/build.rs | |
| parent | sl0p: add a minimal style for the stacked-pane picker (diff) | |
| download | sl0ppij-77818ea9b24eb5d1a57f85b94aedc7bba7cbe8b1.tar.gz sl0ppij-77818ea9b24eb5d1a57f85b94aedc7bba7cbe8b1.tar.xz sl0ppij-77818ea9b24eb5d1a57f85b94aedc7bba7cbe8b1.zip | |
sl0p: keep plugin panes pinned when synthesizing a layout
Collapsing and expanding a tab from the default layout stranded the status bar
halfway down the screen, and left the collapsed stack three rows tall.
A synthesized layout describes only where the user's panes go. Applied bare, it
laid out EVERY pane in the tab -- including the status bar, which became an
ordinary grid cell. Real swap layouts do not hit this because their `tab` node
is expanded with the default tab template, which carries the pinned plugin
slots; a layout built at runtime has to take those from BASE instead.
Synthesis now builds into the tab's own structure: the first non-plugin leaf
becomes the stack or grid and inherits its size, further content leaves are
dropped since the replacement accounts for every pane itself, and plugin panes
keep their slots and sizes.
Falls back to the bare replacement when there is no content slot at all -- a
layout of nothing but plugin panes would otherwise be returned unchanged,
silently dropping every user pane. Found by the test, not by the drive.
Only reproducible with a layout that has plugin panes, which is why the
quaddie.kdl drives never showed it and the default layout did immediately.
Diffstat (limited to 'src/build.rs')
0 files changed, 0 insertions, 0 deletions
