diff options
author | Philip Guenther <guenther@cvs.openbsd.org> | 2014-01-14 02:44:58 +0000 |
---|---|---|
committer | Philip Guenther <guenther@cvs.openbsd.org> | 2014-01-14 02:44:58 +0000 |
commit | 4cd4acb8dea5f413b117b44314459def1f578412 (patch) | |
tree | a945ec923700986e3ac595268b815c233547872b /usr.bin | |
parent | 4287a5ed4f2bfe2e42b97548adca04173e1ad5d3 (diff) |
getnstr() returns KEY_RESIZE if there was a pending resize event, so loop
until it stops returning that, resetting the cursor position each time.
hint from Gregor Best (gbe (at) ring0.de)
problem noted by and ok sthen@
Diffstat (limited to 'usr.bin')
-rw-r--r-- | usr.bin/top/display.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/usr.bin/top/display.c b/usr.bin/top/display.c index d91dc266077..05e62ed55c3 100644 --- a/usr.bin/top/display.c +++ b/usr.bin/top/display.c @@ -1,4 +1,4 @@ -/* $OpenBSD: display.c,v 1.46 2013/11/28 18:24:55 deraadt Exp $ */ +/* $OpenBSD: display.c,v 1.47 2014/01/14 02:44:57 guenther Exp $ */ /* * Top users/processes display for Unix @@ -641,9 +641,12 @@ readline(char *buffer, int size) /* allow room for null terminator */ size -= 1; - if (smart_terminal) - getnstr(buffer, size); - else + if (smart_terminal) { + int y, x; + getyx(stdscr, y, x); + while (getnstr(buffer, size) == KEY_RESIZE) + move(y, x); + } else return readlinedumb(buffer, size); cnt = strlen(buffer); |