ソースを参照

Terminal: Add support for REP ('b' final)

Patch contributed by "pd"
Andreas Kling 6 年 前
コミット
1372f10dda
2 ファイル変更17 行追加0 行削除
  1. 14 0
      Applications/Terminal/Terminal.cpp
  2. 3 0
      Applications/Terminal/Terminal.h

+ 14 - 0
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)

+ 3 - 0
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<CConfigFile> m_config;
+
+    byte m_last_char { 0 };
 };