Skip to content

Commit 68f0326

Browse files
committed
fixed broken screen if terminal ignores save_screen()
1 parent 3205639 commit 68f0326

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

cpp-terminal/base.cpp

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -130,15 +130,27 @@ Term::Terminal::Terminal(bool _clear_screen,
130130
bool disable_ctrl_c)
131131
: BaseTerminal(enable_keyboard, disable_ctrl_c),
132132
clear_screen{_clear_screen} {
133-
if (clear_screen)
133+
if (clear_screen) {
134134
save_screen();
135+
// fixes consoles that ignore save_screen()
136+
write(clear_screen_buffer());
137+
}
135138
}
136139
Term::Terminal::Terminal(bool _clear_screen)
137140
: BaseTerminal(false, true), clear_screen{_clear_screen} {
138-
if (clear_screen)
141+
if (clear_screen) {
139142
save_screen();
143+
// fixes consoles that ignore save_screen()
144+
write(clear_screen_buffer());
145+
}
140146
}
141147
Term::Terminal::~Terminal() {
142-
if (clear_screen)
148+
if (clear_screen) {
149+
// fixes consoles that ignore save_screen()
150+
write(color(Term::style::reset) + clear_screen_buffer() +
151+
move_cursor(1, 1));
152+
153+
// restores the screen, might be ignored by some terminals
143154
restore_screen();
155+
}
144156
}

0 commit comments

Comments
 (0)