tUpdate both lines and columns when getting term size - sacc - sacc (saccomys):… | |
Log | |
Files | |
Refs | |
LICENSE | |
--- | |
commit d90036de3c72730ae2797844b36eb5ae9fd3843f | |
parent aca6ea2766742056ee50d63613d18216613ee901 | |
Author: Quentin Rameau <[email protected]> | |
Date: Sat, 23 Dec 2017 16:19:22 +0100 | |
Update both lines and columns when getting term size | |
Diffstat: | |
ui_txt.c | 24 ++++++++++++------------ | |
1 file changed, 12 insertions(+), 12 deletions(-) | |
--- | |
diff --git a/ui_txt.c b/ui_txt.c | |
t@@ -10,10 +10,10 @@ | |
#include "common.h" | |
-int lines; | |
+int lines, columns; | |
-static int | |
-termlines(void) | |
+static void | |
+viewsize(int *ln, int *col) | |
{ | |
struct winsize ws; | |
t@@ -22,13 +22,16 @@ termlines(void) | |
strerror(errno)); | |
} | |
- return ws.ws_row-1; /* one off for status bar */ | |
+ if (ln) | |
+ *ln = ws.ws_row-1; /* one off for status bar */ | |
+ if (col) | |
+ *col = ws.ws_col; | |
} | |
void | |
uisetup(void) | |
{ | |
- lines = termlines(); | |
+ viewsize(&lines, &columns); | |
} | |
void | |
t@@ -121,7 +124,7 @@ uidisplay(Item *entry) | |
{ | |
Item *items; | |
Dir *dir; | |
- size_t i, lines, nitems; | |
+ size_t i, nlines, nitems; | |
int nd; | |
if (!entry || | |
t@@ -131,10 +134,10 @@ uidisplay(Item *entry) | |
items = dir->items; | |
nitems = dir->nitems; | |
- lines = dir->printoff + termlines(); | |
+ nlines = dir->printoff + lines; | |
nd = ndigits(nitems); | |
- for (i = dir->printoff; i < nitems && i < lines; ++i) { | |
+ for (i = dir->printoff; i < nitems && i < nlines; ++i) { | |
printf("%*zu %s %s\n", | |
nd, i+1, typedisplay(items[i].type), items[i].username); | |
} | |
t@@ -189,7 +192,7 @@ uiselectitem(Item *entry) | |
Dir *dir; | |
static char c; | |
char buf[BUFSIZ], *sstr, nl; | |
- int item, nitems, lines; | |
+ int item, nitems; | |
if (!entry || !(dir = entry->dat)) | |
return NULL; | |
t@@ -234,20 +237,17 @@ uiselectitem(Item *entry) | |
case 'q': | |
return NULL; | |
case 'n': | |
- lines = termlines(); | |
if (lines < nitems - dir->printoff && | |
lines < (size_t)-1 - dir->printoff) | |
dir->printoff += lines; | |
return entry; | |
case 'p': | |
- lines = termlines(); | |
if (lines <= dir->printoff) | |
dir->printoff -= lines; | |
else | |
dir->printoff = 0; | |
return entry; | |
case 'b': | |
- lines = termlines(); | |
if (nitems > lines) | |
dir->printoff = nitems - lines; | |
else |