From 1372f10dda8dcac10fd1961ec9e7707778fa0bfc Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 11 Jun 2019 07:31:47 +0200 Subject: [PATCH] Terminal: Add support for REP ('b' final) Patch contributed by "pd" --- Applications/Terminal/Terminal.cpp | 14 ++++++++++++++ Applications/Terminal/Terminal.h | 3 +++ 2 files changed, 17 insertions(+) diff --git a/Applications/Terminal/Terminal.cpp b/Applications/Terminal/Terminal.cpp index 41c52f1fcb..2cbdd73fc3 100644 --- a/Applications/Terminal/Terminal.cpp +++ b/Applications/Terminal/Terminal.cpp @@ -372,6 +372,15 @@ void Terminal::escape$G(const ParamVector& params) set_cursor(m_cursor_row, new_column); } +void Terminal::escape$b(const ParamVector& params) +{ + if (params.size() < 1) + return; + + for (unsigned i = 0; i < params[0]; ++i) + put_character_at(m_cursor_row, m_cursor_column++, m_last_char); +} + void Terminal::escape$d(const ParamVector& params) { int new_row = 1; @@ -617,6 +626,9 @@ void Terminal::execute_escape_sequence(byte final) case 'X': escape$X(params); break; + case 'b': + escape$b(params); + break; case 'd': escape$d(params); break; @@ -714,6 +726,8 @@ void Terminal::put_character_at(unsigned row, unsigned column, byte ch) line.characters[column] = ch; line.attributes[column] = m_current_attribute; line.dirty = true; + + m_last_char = ch; } void Terminal::on_char(byte ch) diff --git a/Applications/Terminal/Terminal.h b/Applications/Terminal/Terminal.h index 4322986008..7dfb70d0d0 100644 --- a/Applications/Terminal/Terminal.h +++ b/Applications/Terminal/Terminal.h @@ -63,6 +63,7 @@ private: void escape$M(const ParamVector&); void escape$G(const ParamVector&); void escape$X(const ParamVector&); + void escape$b(const ParamVector&); void escape$d(const ParamVector&); void escape$m(const ParamVector&); void escape$s(const ParamVector&); @@ -204,4 +205,6 @@ private: CTimer m_cursor_blink_timer; CTimer m_visual_beep_timer; RetainPtr m_config; + + byte m_last_char { 0 }; };