From e911aba2b0b7d18262856782ba3ddac9a8fa5d7f Mon Sep 17 00:00:00 2001 From: Julian Hurst Date: Sun, 11 Sep 2022 03:06:45 +0200 Subject: Update resize code for libtui --- main.ha | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/main.ha b/main.ha index 512b78a..7117cca 100644 --- a/main.ha +++ b/main.ha @@ -25,17 +25,21 @@ fn sighandler(sig: int, info: *signal::siginfo, ucontext: *void) void = { switch (sig) { case signal::SIGWINCH => let sz = libtui::getwinsize(u.list.widget.ui)!; - let rows: (u16 | size) = if (sz.rows - 2 < len(u.list.items)) { - yield sz.rows - 2; - } else { - yield len(u.list.items); - }; + //let rows: (u16 | size) = if (sz.rows - 2 < len(u.list.items)) { + //yield sz.rows - 2; + //} else { + //yield len(u.list.items); + //}; const oldsz = list::ttysize { rows = u.list.sz.rows, cols = u.list.sz.cols, }; - u.list.sz.rows = rows: u16; - u.list.sz.cols = sz.columns; + list::setsize(u.list, tty::ttysize { + rows = sz.rows - 1u16, + columns = sz.columns, + }); + //u.list.sz.rows = rows: u16; + //u.list.sz.cols = sz.columns; list::resize(u.list, oldsz); libtui::clear(u.list.widget.ui); list::print(u.list)!; @@ -46,8 +50,8 @@ fn sighandler(sig: int, info: *signal::siginfo, ucontext: *void) void = { fn resize(list: *list::listwidget) void = { let sz = libtui::getwinsize(list.widget.ui)!; - let rows: (u16 | size) = if (sz.rows - 2 < len(list.items)) { - yield sz.rows - 2; + let rows: (u16 | size) = if (sz.rows - 1 < len(list.items)) { + yield sz.rows - 1; } else { yield len(list.items); }; @@ -55,8 +59,10 @@ fn resize(list: *list::listwidget) void = { rows = list.sz.rows, cols = list.sz.cols, }; - list.sz.rows = rows: u16; - list.sz.cols = sz.columns; + list::setsize(list, tty::ttysize { + rows = sz.rows - 1u16, + columns = sz.columns, + }); list::resize(list, oldsz); }; @@ -76,7 +82,11 @@ export fn main() void = { let ui = libtui::init(); defer libtui::finish(&ui); - let l = list::newlist(ui, items...); + let sz = libtui::getwinsize(ui)!; + let l = list::newlistsz(ui, tty::ttysize { + rows = sz.rows - 1u16, + columns = sz.columns, + }, items...); libtui::addlistener(&ui, &globalrunehandler); widget::addlistener(&l, &runehandler); -- cgit v1.2.3