diff --git a/src/ftxui/component/screen_interactive.cpp b/src/ftxui/component/screen_interactive.cpp index c446f2ee..fa1cf2c8 100644 --- a/src/ftxui/component/screen_interactive.cpp +++ b/src/ftxui/component/screen_interactive.cpp @@ -844,10 +844,18 @@ void ScreenInteractive::Draw(Component component) { const int dx = dimx_ - 1 - cursor_.x + int(dimx_ != terminal.dimx); const int dy = dimy_ - 1 - cursor_.y; - set_cursor_position = "\x1B[" + std::to_string(dy) + "A" + // - "\x1B[" + std::to_string(dx) + "D"; - reset_cursor_position = "\x1B[" + std::to_string(dy) + "B" + // - "\x1B[" + std::to_string(dx) + "C"; + set_cursor_position.clear(); + reset_cursor_position.clear(); + + if (dx != 0) { + set_cursor_position += "\x1B[" + std::to_string(dx) + "D"; + reset_cursor_position += "\x1B[" + std::to_string(dx) + "C"; + } + + if (dy != 0) { + set_cursor_position += "\x1B[" + std::to_string(dy) + "A"; + reset_cursor_position += "\x1B[" + std::to_string(dy) + "B"; + } if (cursor_.shape == Cursor::Hidden) { set_cursor_position += "\033[?25l";