Compare commits

..

1 Commits

Author SHA1 Message Date
Dmitry Nefedov
566c9b3b64
Merge faf7d7e560 into 70bc44d28b 2024-11-13 07:39:42 +00:00
2 changed files with 9 additions and 4 deletions

View File

@ -121,6 +121,7 @@ class ScreenInteractive : public Screen {
bool mouse_captured = false;
bool previous_frame_resized_ = false;
bool validated_ = false;
bool frame_valid_ = false;
bool force_handle_ctrl_c_ = true;

View File

@ -858,12 +858,15 @@ void ScreenInteractive::Draw(Component component) {
ResetCursorPosition();
std::cout << ResetPosition(/*clear=*/resized);
// If the terminal width decrease, the terminal emulator will start wrapping
// lines and make the display dirty. We should clear it completely.
if ((dimx < dimx_) && !use_alternative_screen_) {
std::cout << "\033[J"; // clear terminal output
// clear terminal output if screen dimx decreases
// only on primary screen
// only on POSIX systems (linux/macos)
#if !defined(_WIN32)
if ((dimx < dimx_) && validated_ && !use_alternative_screen_) {
std::cout << "\033[J"; // clear
std::cout << "\033[H"; // move cursor to home position
}
#endif
// Resize the screen if needed.
if (resized) {
@ -931,6 +934,7 @@ void ScreenInteractive::Draw(Component component) {
std::cout << ToString() << set_cursor_position;
Flush();
Clear();
validated_ = true;
frame_valid_ = true;
}