diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2015-10-27 11:06:20 +0100 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2015-10-27 11:13:08 +0100 |
| commit | 8b57764364fab4610e2e25f9c2005c8553f81053 (patch) | |
| tree | 2f34080aa3b216dd2d7aacee93dc1e6dbbcaba3e | |
| parent | 40370460029d2f3598b578c79f3d08e8921fded3 (diff) | |
| download | vis-8b57764364fab4610e2e25f9c2005c8553f81053.tar.gz vis-8b57764364fab4610e2e25f9c2005c8553f81053.tar.xz | |
ui: properly restore terminal state upon exit
| -rw-r--r-- | ui-curses.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/ui-curses.c b/ui-curses.c index 3bc7c2b..eb6acff 100644 --- a/ui-curses.c +++ b/ui-curses.c @@ -853,7 +853,10 @@ static UiWin *ui_window_new(Ui *ui, View *view, File *file) { } static void ui_die(Ui *ui, const char *msg, va_list ap) { + UiCurses *uic = (UiCurses*)ui; endwin(); + if (uic->termkey) + termkey_stop(uic->termkey); vfprintf(stderr, msg, ap); exit(EXIT_FAILURE); } @@ -972,17 +975,17 @@ static const char *ui_getkey(Ui *ui) { static void ui_terminal_save(Ui *ui) { UiCurses *uic = (UiCurses*)ui; - termkey_stop(uic->termkey); curs_set(1); reset_shell_mode(); + termkey_stop(uic->termkey); } static void ui_terminal_restore(Ui *ui) { UiCurses *uic = (UiCurses*)ui; + termkey_start(uic->termkey); reset_prog_mode(); wclear(stdscr); curs_set(0); - termkey_start(uic->termkey); } Ui *ui_curses_new(void) { |
