Patch by Joshua R. Elsasser:

Implement DECALN escape sequence.

Resolves ticket #4658. Thanks!



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33325 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Rene Gollent
2009-09-27 23:20:19 +00:00
parent 4c8f11fed4
commit 138343f4f8
3 changed files with 24 additions and 4 deletions
+22
View File
@@ -578,6 +578,28 @@ BasicTerminalBuffer::InsertChar(UTF8Char c, uint32 width, uint32 attributes)
}
void
BasicTerminalBuffer::FillScreen(UTF8Char c, uint32 width, uint32 attributes)
{
// TODO: Check if this method can be removed completely
//int width = CodeConv::UTF8GetFontWidth(c.bytes);
if ((int32)width == FULL_WIDTH)
attributes |= A_WIDTH;
fSoftWrappedCursor = false;
for (int32 y = 0; y < fHeight; y++) {
TerminalLine *line = _LineAt(y);
for (int32 x = 0; x < fWidth / (int32)width; x++) {
line->cells[x].character = c;
line->cells[x].attributes = attributes;
}
line->length = fWidth / width;
}
_Invalidate(0, fHeight - 1);
}
void
BasicTerminalBuffer::InsertCR()
{
+1
View File
@@ -103,6 +103,7 @@ public:
uint32 attributes);
inline void InsertChar(const char* c, int32 length,
uint32 width, uint32 attributes);
void FillScreen(UTF8Char c, uint32 width, uint32 attr);
void InsertCR();
void InsertLF();
+1 -4
View File
@@ -821,10 +821,7 @@ TermParse::EscParse()
case CASE_DECALN:
/* DECALN */
// if(screen->cursor_state)
// HideCursor();
// ScrnRefresh(screen, 0, 0, screen->max_row + 1,
// screen->max_col + 1, False);
fBuffer->FillScreen(UTF8Char('E'), 1, 0);
parsestate = groundtable;
break;