diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2015-07-09 15:10:15 +0200 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2015-07-09 16:41:45 +0200 |
| commit | b88e0eff7e8ac64dd0aeb7ec93e9803689d068fe (patch) | |
| tree | f4bba949230f6ff6b378e29d4fd9c5404b2faab1 | |
| parent | 9e7cb40b1f527c1bf431d4ca6c9b9ca4e70b5459 (diff) | |
| download | vis-b88e0eff7e8ac64dd0aeb7ec93e9803689d068fe.tar.gz vis-b88e0eff7e8ac64dd0aeb7ec93e9803689d068fe.tar.xz | |
ui: move terminal state handling code to ui specific file
| -rw-r--r-- | ui-curses.c | 11 | ||||
| -rw-r--r-- | ui.h | 2 | ||||
| -rw-r--r-- | 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; @@ -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 { @@ -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; } |
