Fix when scrollback limit is reached

This commit is contained in:
Daniel Imms
2016-12-21 15:43:04 -08:00
parent fd25bd7ca2
commit be56c72b5f
2 changed files with 4 additions and 20 deletions
-5
View File
@@ -93,11 +93,6 @@ export class CircularList<T> {
return this._array[this._getCyclicIndex(this._length-- - 1)];
}
public removeItemsFromStart(amount: number): void {
this._startIndex += this._length -amount;
this._length = amount;
}
// TODO: Warn there's no error handling and that this is a slow operation
public splice(start: number, deleteCount: number, ...items: T[]) {
if (deleteCount) {
+4 -15
View File
@@ -1226,15 +1226,13 @@ Terminal.prototype.showCursor = function() {
};
/**
* Scroll the terminal
* Scroll the terminal down 1 row, creating a blank line.
*/
Terminal.prototype.scroll = function() {
var row;
if (++this.ybase === this.scrollback) {
this.ybase = this.ybase / 2;
// TODO: Rely on the circular list instead of cutting it in half
this.lines.removeItemsFromStart(this.ybase + this.rows - 1);
if (this.lines.length < this.lines.maxLength) {
this.ybase++;
}
if (!this.userScrolling) {
@@ -1247,16 +1245,7 @@ Terminal.prototype.scroll = function() {
// subtract the bottom scroll region
row -= this.rows - 1 - this.scrollBottom;
if (row === this.lines.length) {
// potential optimization:
// pushing is faster than splicing
// when they amount to the same
// behavior.
this.lines.push(this.blankLine());
} else {
// add our new line
this.lines.splice(row, 0, this.blankLine());
}
this.lines.push(this.blankLine());
if (this.scrollTop !== 0) {
if (this.ybase !== 0) {