]> git.proxmox.com Git - mirror_xterm.js.git/commitdiff
Fix when scrollback limit is reached
authorDaniel Imms <daimms@microsoft.com>
Wed, 21 Dec 2016 23:43:04 +0000 (15:43 -0800)
committerDaniel Imms <daimms@microsoft.com>
Wed, 21 Dec 2016 23:43:04 +0000 (15:43 -0800)
src/utils/CircularList.ts
src/xterm.js

index 90659544fc04591e242c1d34f4cb3a7a985c3503..a131bcbd73563aef888e65e6188a3f46e8386aab 100644 (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) {
index 813c720a453ee02a3d0b9704d2cc7cf6a630d488..2cf0651c499ea8e7e439c5e3185a5660857c52bf 100644 (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) {