aboutsummaryrefslogtreecommitdiffstats
path: root/src/build.rs
diff options
context:
space:
mode:
authoruser <user@clank>2026-08-11 20:26:57 +0200
committeruser <user@clank>2026-08-11 20:26:57 +0200
commit77818ea9b24eb5d1a57f85b94aedc7bba7cbe8b1 (patch)
treeb3a2f85123459fc7bb8016401c1c585c523b628d /src/build.rs
parentsl0p: add a minimal style for the stacked-pane picker (diff)
downloadsl0ppij-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