iFixed horizontal scrolling - iomenu - interactive terminal-based selection menu Err bitreich.org 70 hgit clone git://bitreich.org/iomenu git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/iomenu URL:git://bitreich.org/iomenu git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/iomenu bitreich.org 70 1Log /scm/iomenu/log.gph bitreich.org 70 1Files /scm/iomenu/files.gph bitreich.org 70 1Refs /scm/iomenu/refs.gph bitreich.org 70 1Tags /scm/iomenu/tag bitreich.org 70 1README /scm/iomenu/file/README.gph bitreich.org 70 1LICENSE /scm/iomenu/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 70864688887921021de8ce2b803fdd4206214cda /scm/iomenu/commit/70864688887921021de8ce2b803fdd4206214cda.gph bitreich.org 70 1parent 62853eb76762d6adfac4bd5cbcc410e96ebc955f /scm/iomenu/commit/62853eb76762d6adfac4bd5cbcc410e96ebc955f.gph bitreich.org 70 hAuthor: Josuah Demangeonā  ā µ URL:mailto:mail@josuah.net bitreich.org 70 iDate: Sun, 19 Mar 2017 13:53:45 +0100 Err bitreich.org 70 i Err bitreich.org 70 iFixed horizontal scrolling Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M iomenu.c | 29 +++++------------------------ Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 5 insertions(+), 24 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/iomenu.c b/iomenu.c /scm/iomenu/file/iomenu.c.gph bitreich.org 70 i@@ -137,11 +137,10 @@ print_lines(int count) Err bitreich.org 70 i static int Err bitreich.org 70 i prev_page(int pos, int cols) Err bitreich.org 70 i { Err bitreich.org 70 i- pos--; Err bitreich.org 70 i+ pos -= pos > 0 ? 1 : 0; Err bitreich.org 70 i for (int col = 0; pos > 0; pos--) Err bitreich.org 70 i if ((col += strlen(matchv[pos]) + 2) > cols) Err bitreich.org 70 i return pos + 1; Err bitreich.org 70 i- Err bitreich.org 70 i return pos; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i@@ -151,8 +150,7 @@ next_page(int pos, int cols) Err bitreich.org 70 i { Err bitreich.org 70 i for (int col = 0; pos < matchc; pos++) Err bitreich.org 70 i if ((col += strlen(matchv[pos]) + 2) > cols) Err bitreich.org 70 i- return pos - 1; Err bitreich.org 70 i- Err bitreich.org 70 i+ return pos; Err bitreich.org 70 i return pos; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i@@ -162,13 +160,11 @@ print_columns(void) Err bitreich.org 70 i { Err bitreich.org 70 i if (current < offset) { Err bitreich.org 70 i next = offset; Err bitreich.org 70 i- offset = prev; Err bitreich.org 70 i- prev = prev_page(offset, winsize.ws_col - 30 - 1); Err bitreich.org 70 i+ offset = prev_page(offset, winsize.ws_col - 30 - 4); Err bitreich.org 70 i Err bitreich.org 70 i } else if (current >= next) { Err bitreich.org 70 i- prev = offset; Err bitreich.org 70 i offset = next; Err bitreich.org 70 i- next = next_page(offset, winsize.ws_col - 30 - 1); Err bitreich.org 70 i+ next = next_page(offset, winsize.ws_col - 30 - 4); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i fputs(offset > 0 ? "< " : " ", stderr); Err bitreich.org 70 i@@ -182,19 +178,6 @@ print_columns(void) Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i static void Err bitreich.org 70 i-print_prompt(void) Err bitreich.org 70 i-{ Err bitreich.org 70 i- int limit = opt_lines ? winsize.ws_col : 30 - 2; Err bitreich.org 70 i- Err bitreich.org 70 i- fputc('\r', stderr); Err bitreich.org 70 i- for (int i = 0; i < limit; i++) Err bitreich.org 70 i- fputc(' ', stderr); Err bitreich.org 70 i- Err bitreich.org 70 i- fprintf(stderr, "\r%s %s", opt_prompt, input); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i-static void Err bitreich.org 70 i print_screen(int tty_fd) Err bitreich.org 70 i { Err bitreich.org 70 i int count; Err bitreich.org 70 i@@ -215,7 +198,7 @@ print_screen(int tty_fd) Err bitreich.org 70 i print_columns(); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i- print_prompt(); Err bitreich.org 70 i+ fprintf(stderr, "\r%s %s", opt_prompt, input); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i@@ -256,8 +239,6 @@ filter_lines(void) Err bitreich.org 70 i matchv[matchc++] = linev[i]; Err bitreich.org 70 i Err bitreich.org 70 i free(tokv); Err bitreich.org 70 i- Err bitreich.org 70 i- next = next_page(0, winsize.ws_col - 30 - 1); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 .