Home
scrolling working on line mode - iomenu - interactive terminal-based selection menu HTML git clone git://bitreich.org/iomenu git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/iomenu DIR Log DIR Files DIR Refs DIR Tags DIR README DIR LICENSE --- DIR commit a393b370908b21080348141ea591395502f4a36e DIR parent 63ce568f63eef334f256370d444e557d2ecceb68 HTML Author: Josuah Demangeonā ā µ <mail@josuah.net> Date: Sat, 18 Mar 2017 19:42:46 +0100 scrolling working on line mode Diffstat: M iomenu.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) --- DIR diff --git a/iomenu.c b/iomenu.c @@ -18,7 +18,8 @@ char input[BUFSIZ]; -size_t current = 0, matchc = 0, linec = 0, offset = 0; +size_t current = 0, offset = 0, last = 0; +size_t linec = 0, matchc = 0; char **linev = NULL, **matchv = NULL; char *opt_prompt = ""; int opt_lines = 0; @@ -166,14 +167,15 @@ print_string(char *str, size_t limit, int current) void print_lines(size_t count, size_t cols) { - size_t printed = 0, i = current / count * count; + size_t p = 0; /* amount of lines printed */ + offset = current / count * count; - for (; printed < count && i < matchc; printed++, i++) { + for (size_t i = offset; p < count && i < matchc; p++, i++) { fputc('\n', stderr); print_string(matchv[i], cols, i == current); } - while (printed++ <= count) + while (p++ <= count) fputs("\n\033[K", stderr); }