summaryrefslogtreecommitdiff
path: root/tui
diff options
context:
space:
mode:
authorJulian Hurst <julian.hurst@digdash.com>2025-03-12 10:16:02 +0100
committerJulian Hurst <julian.hurst@digdash.com>2025-03-12 10:16:02 +0100
commit4eeda7244acbc97c2937ecb6768309539e28e35a (patch)
treee3d1fe2f479fd1240597af31ede39c9cf10761cb /tui
parent977f80f4b60983d03d069e11032e9cd15339b6d8 (diff)
downloadhare-tui-4eeda7244acbc97c2937ecb6768309539e28e35a.tar.gz
list: Handle size properly
Diffstat (limited to 'tui')
-rw-r--r--tui/widget/list/list.ha13
1 files changed, 12 insertions, 1 deletions
diff --git a/tui/widget/list/list.ha b/tui/widget/list/list.ha
index a4ec77e..7e60299 100644
--- a/tui/widget/list/list.ha
+++ b/tui/widget/list/list.ha
@@ -52,7 +52,18 @@ export fn printlist(widget: *widget::widget) void = {
const list = widget: *list;
let st = memio::dynamic();
defer io::close(&st)!;
- memio::concat(&st, strings::join("\n", list.items[list.frame.start..list.frame.end]...))!;
+ for (let i = list.frame.start; i < list.frame.end; i += 1) {
+ let item = match (list.widget.sz) {
+ case let sz: tty::ttysize =>
+ yield strings::sub(list.items[i], 0z, sz.columns);
+ case widget::nosize =>
+ yield list.items[i];
+ };
+ memio::concat(&st, item)!;
+ if (i != list.frame.end - 1) {
+ memio::concat(&st, "\n")!;
+ };
+ };
widget::print(list.widget.out, memio::string(&st)!, (1, 1));
};