aboutsummaryrefslogtreecommitdiffstats
path: root/default-plugins
diff options
context:
space:
mode:
authoruser <user@clank>2026-08-11 16:33:46 +0200
committeruser <user@clank>2026-08-11 16:33:46 +0200
commit4e001669f5a9dcc883f58bf0c3710c7460ae93cc (patch)
tree116fae3213fd781ea62b15c05256831f2ec9843e /default-plugins
parentsl0p: click the picker's indicator row to expand a capped stack (diff)
downloadsl0ppij-4e001669f5a9dcc883f58bf0c3710c7460ae93cc.tar.gz
sl0ppij-4e001669f5a9dcc883f58bf0c3710c7460ae93cc.tar.xz
sl0ppij-4e001669f5a9dcc883f58bf0c3710c7460ae93cc.zip
sl0p: optionally render the stacked-pane picker as a grid
`stack_list_layout "grid"` packs picker entries several per row, which turns stack_list_max_rows from a count into a space budget: eight panes in a wide terminal now fit on one row instead of spending three and hiding five. The entry renderer already drew each entry as a single chunk at its own x/y, sized by its geom and centring its own label, so a grid needed no rendering changes at all -- only the loop assigning every entry the same x and the full width. Column count is derived from the widest label rather than configured, so it adapts to the titles; one column is the floor and reproduces the previous full-width rows byte for byte. The row -> member mapping now has a column axis, and it had already caused one wrong-pane bug when two consumers disagreed. So the layout is computed once, by one function, into explicit cells; the renderer, the reserved-row budget and the mouse hit-test all read those same cells rather than each doing their own arithmetic. Windowing is by row, so a grid scrolls a whole row at a time and degrades to the old per-member window when there is one column. Cells are separated by a two-column gap: without it the focused entry's "> " marker sits flush against the previous cell and reads as belonging to it.
Diffstat (limited to 'default-plugins')
0 files changed, 0 insertions, 0 deletions