diff --git a/include/ftxui/component/screen_interactive.hpp b/include/ftxui/component/screen_interactive.hpp index 999fbbc..6c79913 100644 --- a/include/ftxui/component/screen_interactive.hpp +++ b/include/ftxui/component/screen_interactive.hpp @@ -121,7 +121,6 @@ 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; diff --git a/src/ftxui/component/screen_interactive.cpp b/src/ftxui/component/screen_interactive.cpp index 19754bf..45a4fff 100644 --- a/src/ftxui/component/screen_interactive.cpp +++ b/src/ftxui/component/screen_interactive.cpp @@ -858,15 +858,12 @@ void ScreenInteractive::Draw(Component component) { ResetCursorPosition(); std::cout << ResetPosition(/*clear=*/resized); - // 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 + // 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 std::cout << "\033[H"; // move cursor to home position } -#endif // Resize the screen if needed. if (resized) { @@ -934,7 +931,6 @@ void ScreenInteractive::Draw(Component component) { std::cout << ToString() << set_cursor_position; Flush(); Clear(); - validated_ = true; frame_valid_ = true; }