diff --git a/ChangeLog b/ChangeLog index 9b79a630b58deae20fda19aa17118125d2a36461..9fc8d16ea0a168a27e4842ef98dca7d2877644c4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -31,8 +31,9 @@ CVS code - and turn off via termios in main(), as well as with the associated comment. (DLR) handle_sigwinch() - - Set keypad() to TRUE just before calling siglongjmp(), in case - we resized during verbatim input. (DLR) + - Set keypad() to TRUE and switch to cbreak mode just before + calling siglongjmp(), in case we resized during verbatim + input. (DLR) main() - Move the call to raw() on systems that don't define _POSIX_VDISABLE outside the main input/output loop, as it diff --git a/src/nano.c b/src/nano.c index e9eae62e4fe3aedcad538d5f4195aaa846e1aa66..b5a5b1327080c5bc8597e5837d37197e08f3fca7 100644 --- a/src/nano.c +++ b/src/nano.c @@ -240,8 +240,7 @@ void window_init(void) topwin = newwin(2, COLS, 0, 0); bottomwin = newwin(3 - no_help(), COLS, LINES - 3 + no_help(), 0); - /* Turn the keypad on, so that it still works after a Meta-X, for - * example. */ + /* Turn the keypad on, so that it still works after a Meta-X. */ keypad(edit, TRUE); keypad(bottomwin, TRUE); } @@ -2978,10 +2977,13 @@ void handle_sigwinch(int s) /* Turn cursor back on for sure. */ curs_set(1); - /* Turn the keypad on, so that it still works if we resized during - * verbatim input, for example. */ + /* Turn the keypad on and switch to cbreak mode, so that the keypad + * and input still work if we resized during verbatim input. */ keypad(edit, TRUE); keypad(bottomwin, TRUE); +#ifdef _POSIX_VDISABLE + cbreak(); +#endif /* Jump back to the main loop. */ siglongjmp(jmpbuf, 1);