Actually clear display when issuing clear

* From: 2a36b915cb
This commit is contained in:
Martin Valba 2022-12-28 16:11:53 +02:00
parent a0f3bea38e
commit 319e18ed41
2 changed files with 15 additions and 0 deletions

View File

@ -1,5 +1,7 @@
package com.offsec.nhterm.backend;
import java.util.Arrays;
/**
* A circular buffer of {@link TerminalRow}:s which keeps notes about what is visible on a logical screen and the scroll
* history.
@ -432,4 +434,13 @@ public final class TerminalBuffer {
}
}
public void clearTranscript() {
if (mScreenFirstRow < mActiveTranscriptRows) {
Arrays.fill(mLines, mTotalRows + mScreenFirstRow - mActiveTranscriptRows, mTotalRows, null);
Arrays.fill(mLines, 0, mScreenFirstRow, null);
} else {
Arrays.fill(mLines, mScreenFirstRow - mActiveTranscriptRows, mScreenFirstRow, null);
}
mActiveTranscriptRows = 0;
}
}

View File

@ -1372,6 +1372,7 @@ public final class TerminalEmulator {
break;
case 'c': // RIS - Reset to Initial State (http://vt100.net/docs/vt510-rm/RIS).
reset();
mMainBuffer.clearTranscript();
blockClear(0, 0, mColumns, mRows);
setCursorPosition(0, 0);
break;
@ -1530,6 +1531,9 @@ public final class TerminalEmulator {
// move..
blockClear(0, 0, mColumns, mRows);
break;
case 3: // Delete all lines saved in the scrollback buffer (xterm etc)
mMainBuffer.clearTranscript();
break;
default:
unknownSequence(b);
return;