From 4cd4acb8dea5f413b117b44314459def1f578412 Mon Sep 17 00:00:00 2001 From: Philip Guenther Date: Tue, 14 Jan 2014 02:44:58 +0000 Subject: 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@ --- usr.bin/top/display.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'usr.bin/top') 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); -- cgit v1.2.3