mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 14:37:46 +00:00
LibVT: Implement ICH sequence.
This commit is contained in:
parent
e575d3fd3d
commit
0f988424cf
2 changed files with 26 additions and 0 deletions
|
@ -704,6 +704,9 @@ void Terminal::execute_escape_sequence(u8 final)
|
||||||
case 'n':
|
case 'n':
|
||||||
DSR(params);
|
DSR(params);
|
||||||
break;
|
break;
|
||||||
|
case '@':
|
||||||
|
ICH(params);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
dbgprintf("Terminal::execute_escape_sequence: Unhandled final '%c'\n", final);
|
dbgprintf("Terminal::execute_escape_sequence: Unhandled final '%c'\n", final);
|
||||||
break;
|
break;
|
||||||
|
@ -821,6 +824,28 @@ void Terminal::DSR(const ParamVector& params)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Terminal::ICH(const ParamVector& params)
|
||||||
|
{
|
||||||
|
int num = 0;
|
||||||
|
if (params.size() >= 1) {
|
||||||
|
num = params[0];
|
||||||
|
}
|
||||||
|
if (num == 0)
|
||||||
|
num = 1;
|
||||||
|
|
||||||
|
auto& line = m_lines[m_cursor_row];
|
||||||
|
|
||||||
|
// Move characters after cursor to the right
|
||||||
|
for (int i = line.length() - num; i >= m_cursor_column; --i)
|
||||||
|
line.set_code_point(i + num, line.code_point(i));
|
||||||
|
|
||||||
|
// Fill n characters after cursor with blanks
|
||||||
|
for (int i = 0; i < num; i++)
|
||||||
|
line.set_code_point(m_cursor_column + i, ' ');
|
||||||
|
|
||||||
|
line.set_dirty(true);
|
||||||
|
}
|
||||||
|
|
||||||
void Terminal::on_input(u8 ch)
|
void Terminal::on_input(u8 ch)
|
||||||
{
|
{
|
||||||
#ifdef TERMINAL_DEBUG
|
#ifdef TERMINAL_DEBUG
|
||||||
|
|
|
@ -173,6 +173,7 @@ private:
|
||||||
void IND();
|
void IND();
|
||||||
void RI();
|
void RI();
|
||||||
void DSR(const ParamVector&);
|
void DSR(const ParamVector&);
|
||||||
|
void ICH(const ParamVector&);
|
||||||
|
|
||||||
TerminalClient& m_client;
|
TerminalClient& m_client;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue