summaryrefslogtreecommitdiff
path: root/tui/widget/list/list.ha
diff options
context:
space:
mode:
authorJulian Hurst <ark@mansus.space>2025-03-19 23:53:56 +0100
committerJulian Hurst <ark@mansus.space>2025-03-19 23:53:58 +0100
commit05794aae570fd3c2f6ed27937b785f3d086f57f4 (patch)
treedaadef54404131604bbda28cfa315f2d8eb5e522 /tui/widget/list/list.ha
parent0d8f330ccf366a2733bb6d5d1e51eef3579f04aa (diff)
downloadhare-tui-05794aae570fd3c2f6ed27937b785f3d086f57f4.tar.gz
Replace widget buf string with linesbuf
This allows the generic widget print code to iterate more easily on the lines and to apply widget-specific styles without breaking them by truncating the console codes.
Diffstat (limited to 'tui/widget/list/list.ha')
-rw-r--r--tui/widget/list/list.ha18
1 files changed, 3 insertions, 15 deletions
diff --git a/tui/widget/list/list.ha b/tui/widget/list/list.ha
index 23127ac..61ab22d 100644
--- a/tui/widget/list/list.ha
+++ b/tui/widget/list/list.ha
@@ -56,22 +56,10 @@ style: (*widget::style | void), items: str...) (list | tty::error) = {
export fn printlist(widget: *widget::widget) void = {
const list = widget: *list;
- let st = memio::dynamic();
- defer io::close(&st)!;
- 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)!;
- memio::concat(&st, list.items[i])!;
- if (i != list.frame.end - 1) {
- memio::concat(&st, "\n")!;
- };
+ list.widget.buf = widget::linesbuf {
+ lines = list.items[list.frame.start..list.frame.end],
+ styles = null,
};
- list.widget.buf = memio::string(&st)!;
widget::print(list);
};