From b88e0eff7e8ac64dd0aeb7ec93e9803689d068fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Thu, 9 Jul 2015 15:10:15 +0200 Subject: ui: move terminal state handling code to ui specific file --- ui-curses.c | 11 +++++++++++ ui.h | 2 ++ vis.c | 5 ++--- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/ui-curses.c b/ui-curses.c index f2f6899..f333c1d 100644 --- a/ui-curses.c +++ b/ui-curses.c @@ -568,6 +568,15 @@ static Key ui_getkey(Ui *ui) { return key; } +static void ui_terminal_save(Ui *ui) { + reset_shell_mode(); +} + +static void ui_terminal_restore(Ui *ui) { + reset_prog_mode(); + wclear(stdscr); +} + Ui *ui_curses_new(void) { setlocale(LC_CTYPE, ""); if (!getenv("ESCDELAY")) @@ -613,6 +622,8 @@ Ui *ui_curses_new(void) { .color_get = color_get, .haskey = ui_haskey, .getkey = ui_getkey, + .terminal_save = ui_terminal_save, + .terminal_restore = ui_terminal_restore, }; struct sigaction sa; diff --git a/ui.h b/ui.h index 40e2ea7..18c9e0f 100644 --- a/ui.h +++ b/ui.h @@ -47,6 +47,8 @@ struct Ui { void (*resume)(Ui*); Key (*getkey)(Ui*); bool (*haskey)(Ui*); + void (*terminal_save)(Ui*); + void (*terminal_restore)(Ui*); }; struct UiWin { diff --git a/vis.c b/vis.c index f4f712a..38cd0dd 100644 --- a/vis.c +++ b/vis.c @@ -1744,7 +1744,7 @@ static bool cmd_filter(Filerange *range, enum CmdOpt opt, const char *argv[]) { return false; } - reset_shell_mode(); + vis->ui->terminal_save(vis->ui); pid_t pid = fork(); if (pid == -1) { @@ -1922,8 +1922,7 @@ static bool cmd_filter(Filerange *range, enum CmdOpt opt, const char *argv[]) { if (restore_signals) sigaction(SIGTERM, &oldsa, NULL); - reset_prog_mode(); - wclear(stdscr); + vis->ui->terminal_restore(vis->ui); return status == 0; } -- cgit v1.2.3