diff options
| -rw-r--r-- | main.ha | 34 |
1 files changed, 22 insertions, 12 deletions
@@ -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); |
