diff options
| author | user <user@clank> | 2026-08-11 16:33:46 +0200 |
|---|---|---|
| committer | user <user@clank> | 2026-08-11 16:33:46 +0200 |
| commit | 4e001669f5a9dcc883f58bf0c3710c7460ae93cc (patch) | |
| tree | 116fae3213fd781ea62b15c05256831f2ec9843e /default-plugins | |
| parent | sl0p: click the picker's indicator row to expand a capped stack (diff) | |
| download | sl0ppij-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
