aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorPeter Geissler <peter@haxx.in>2026-09-20 19:49:09 +0200
committerPeter Geissler <peter@haxx.in>2026-09-20 19:49:09 +0200
commit1b70e64fdb82344edb9b56a7374263539ce3fa0d (patch)
treee07a90c051f110303d4c6f71a38033e95b9e97d0 /include
parenttabs: air before the new-tab button, and the option to do without it (diff)
downloadslosh-1b70e64fdb82344edb9b56a7374263539ce3fa0d.tar.gz
slosh-1b70e64fdb82344edb9b56a7374263539ce3fa0d.tar.xz
slosh-1b70e64fdb82344edb9b56a7374263539ce3fa0d.zip
sidebar: a talkative pane can no longer cost you a tab
Rows were spent in tab order until they ran out, so statuses from early tabs simply consumed the rows later tabs needed for their labels. Four tabs of three announcing panes in a sixteen-row terminal left the fourth tab with no row and no hit anywhere on the sidebar -- not clipped, unreachable -- and the new-tab button went with it. The list is the navigation and a status is an annotation on it, so the annotation is what gives way. Before drawing a tab's statuses, reserve a row for each tab still to come and one for the button, and allow the statuses only what is left over. The "and more" ellipsis is measured against that allowance rather than the cap, so a list cut short by the height still says it was cut, the same as one cut short by the setting. The pad is deliberately not reserved: it already gives itself up a cell at a time, which is the same order of surrender -- spacing, then extra statuses, then statuses, never the thing they are about.
Diffstat (limited to 'include')
0 files changed, 0 insertions, 0 deletions