Shell: Handle SIGWINCH to get a nice behavior when resizing.

When resizing the terminal, we now clear the entire current line and reset
the shell's LineEditor input state. This makes it look and feel kinda the
same as xterm.

Fixes #286.
This commit is contained in:
Andreas Kling 2019-07-08 19:04:13 +02:00
commit fc4022d173
Notes: sideshowbarker 2024-07-19 13:21:49 +09:00
3 changed files with 18 additions and 27 deletions

View file

@ -50,10 +50,16 @@ String LineEditor::get_line()
if (nread < 0) {
if (errno == EINTR) {
if (g.was_interrupted) {
g.was_interrupted = false;
if (!m_buffer.is_empty())
printf("^C");
}
g.was_interrupted = false;
if (g.was_resized) {
g.was_resized = false;
printf("\033[2K\r");
m_buffer.clear();
return String::empty();
}
m_buffer.clear();
putchar('\n');
return String::empty();