Implemented \ESC[?47h and \ESC[?47l (use alternative/normal screen
buffer). These are the sequences our /etc/termcap uses (local less and vim use the alternative screen buffer now). The ones already implemented are used e.g. by the termcap of my Linux installation. A bit weird all those different termcap files, some even with the same version number. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26031 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
f3c7795744
commit
1291c38c18
@ -1093,9 +1093,13 @@ TermParse::_DecPrivateModeSet(int value)
|
||||
// Not supported yet.
|
||||
break;
|
||||
case 25:
|
||||
// Show Cursor
|
||||
// Show Cursor.
|
||||
// Not supported yet.
|
||||
break;
|
||||
case 47:
|
||||
// Use Alternate Screen Buffer.
|
||||
fBuffer->UseAlternateScreenBuffer(false);
|
||||
break;
|
||||
case 1034:
|
||||
// Interpret "meta" key, sets eighth bit.
|
||||
// Not supported yet.
|
||||
@ -1104,7 +1108,7 @@ TermParse::_DecPrivateModeSet(int value)
|
||||
// Save cursor as in DECSC and use Alternate Screen Buffer, clearing
|
||||
// it first.
|
||||
fBuffer->SaveCursor();
|
||||
fBuffer->UseAlternateScreenBuffer();
|
||||
fBuffer->UseAlternateScreenBuffer(true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1138,14 +1142,18 @@ TermParse::_DecPrivateModeReset(int value)
|
||||
// Hide Cursor
|
||||
// Not supported yet.
|
||||
break;
|
||||
case 47:
|
||||
// Use Normal Screen Buffer.
|
||||
fBuffer->UseNormalScreenBuffer();
|
||||
break;
|
||||
case 1034:
|
||||
// Don’t interpret "meta" key.
|
||||
// Not supported yet.
|
||||
break;
|
||||
case 1049:
|
||||
// Use Normal Screen Buffer and restore cursor as in DECRC.
|
||||
fBuffer->RestoreCursor();
|
||||
fBuffer->UseNormalScreenBuffer();
|
||||
fBuffer->RestoreCursor();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -176,13 +176,16 @@ TerminalBuffer::ResizeTo(int32 width, int32 height, int32 historyCapacity)
|
||||
|
||||
|
||||
void
|
||||
TerminalBuffer::UseAlternateScreenBuffer()
|
||||
TerminalBuffer::UseAlternateScreenBuffer(bool clear)
|
||||
{
|
||||
if (fAlternateScreenActive || fAlternateScreen == NULL)
|
||||
return;
|
||||
|
||||
_SwitchScreenBuffer();
|
||||
Clear(false);
|
||||
|
||||
if (clear)
|
||||
Clear(false);
|
||||
|
||||
_InvalidateAll();
|
||||
}
|
||||
|
||||
|
@ -32,7 +32,7 @@ public:
|
||||
virtual status_t ResizeTo(int32 width, int32 height,
|
||||
int32 historyCapacity);
|
||||
|
||||
void UseAlternateScreenBuffer();
|
||||
void UseAlternateScreenBuffer(bool clear);
|
||||
void UseNormalScreenBuffer();
|
||||
|
||||
protected:
|
||||
|
Loading…
Reference in New Issue
Block a user