aboutsummaryrefslogtreecommitdiffstats
path: root/cli/src
diff options
context:
space:
mode:
authoruser <user@clank>2026-08-13 19:39:18 +0200
committeruser <user@clank>2026-08-13 19:39:18 +0200
commitae726b5bb3ff8e9e8f2bef0e9fbc9d4dcb62a79e (patch)
treea6cc3f56559c05b812d6bf6998d2b768c8672162 /cli/src
parentbuild: cut the edit loop from 52s to 5s with more codegen units (diff)
downloadsl0ppi-ae726b5bb3ff8e9e8f2bef0e9fbc9d4dcb62a79e.tar.gz
sl0ppi-ae726b5bb3ff8e9e8f2bef0e9fbc9d4dcb62a79e.tar.xz
sl0ppi-ae726b5bb3ff8e9e8f2bef0e9fbc9d4dcb62a79e.zip
sl0p: make the split button work on stacked panes too
Reported still dead on a live session after the previous fix. Stacks move the frame twice more, and neither move was in the hit-test: - a stack list is drawn over the top rows of its visible member, pushing that pane's frame down. The renderer applies this as a frame geom override (reserved_top_rows); the click side did not, so every pane in a stack was clickable one row above its own title. frame_rect_with_top_reserved() now applies the same shift, before the gap inset, in the same order as render; - a stack's collapsed members drew a button on their one-row title. Nothing could honour it -- that row is the stack's picker, and "split the pane that is not on screen" is not a thing to ask anyway. They no longer draw one, and the click side mirrors the condition. 120 snapshot lines change, every one of them a one-liner losing its button and nothing else (same width, same content otherwise; audited mechanically). Both confirmed by reintroducing each bug and watching the check fail. A third candidate fix -- resolving a click to the stack's visible member, on the theory that get_pane_at could return a collapsed sibling -- turned out to be unnecessary: collapsed members have one-row geoms, so position lookup already lands on the right pane. Removed rather than kept "just in case". The check itself was wrong twice before it was right, in the direction that matters most (reporting failures that were its own): it now reads until the pty goes quiet instead of for a fixed time, and parses only a freshly forced repaint, so a half-arrived screen cannot look like a button drawn where it is not. It clicks every button it can see, and runs against config/config.kdl as well, whose stacks the minimal config never had. When the two disagree, the server's own log settles it: log::info! in intercept_split_button_click, read /tmp/sl0ppij-$UID/sl0ppij-log/.
Diffstat (limited to 'cli/src')
0 files changed, 0 insertions, 0 deletions