]> git.proxmox.com Git - mirror_xterm.js.git/commitdiff
Improve experience and add test
authorParis Kasidiaris <paris@sourcelair.com>
Fri, 4 Nov 2016 12:20:17 +0000 (14:20 +0200)
committerParis Kasidiaris <paris@sourcelair.com>
Fri, 4 Nov 2016 12:29:17 +0000 (12:29 +0000)
- Scroll to bottom on keydown (when scrolled up)
- Add test to ensure above behavior

src/xterm.js
test/test.js

index 4d42c5d4c0a6738c5670c5f9607bc2a3f5674c64..454188b7e02ad91573fd374cc65a93d3201da90e 100644 (file)
@@ -1352,12 +1352,6 @@ Terminal.prototype.write = function(data) {
   this.refreshStart = this.y;
   this.refreshEnd = this.y;
 
-  // if (this.ybase !== this.ydisp) {
-  //   this.ydisp = this.ybase;
-  //   this.emit('scroll', this.ydisp);
-  //   this.maxRange();
-  // }
-
   // apply leftover surrogate high from last write
   if (this.surrogate_high) {
     data = this.surrogate_high + data;
@@ -2423,6 +2417,11 @@ Terminal.prototype.attachCustomKeydownHandler = function(customKeydownHandler) {
  * @param {KeyboardEvent} ev The keydown event to be handled.
  */
 Terminal.prototype.keyDown = function(ev) {
+  // Scroll down to prompt, whenever the user presses a key.
+  if (this.ybase !== this.ydisp) {
+    this.scrollToBottom();
+  }
+
   if (this.customKeydownHandler && this.customKeydownHandler(ev) === false) {
     return false;
   }
@@ -2974,7 +2973,7 @@ Terminal.prototype.updateRange = function(y) {
 };
 
 /**
- * Set the range of refreshing to the maximyum value
+ * Set the range of refreshing to the maximum value
  */
 Terminal.prototype.maxRange = function() {
   this.refreshStart = 0;
index eb34a44e2a83fa4f357b92a5cf23b5d984a34574..8cdf2db6c6c2463faa8bb5bd87ee6bc8138a02e8 100644 (file)
@@ -181,6 +181,25 @@ describe('xterm.js', function() {
         assert.equal(xterm.ydisp, startYDisp);
       });
     });
+
+    describe('keyDown', function () {
+      it('should scroll down, when a key is pressed and terminal is scrolled up', function () {
+        var terminal = new Terminal();
+
+        // Do not process the keyDown event, to avoid side-effects
+        terminal.attachCustomKeydownHandler(function () {
+          return false;
+        });
+
+        terminal.ydisp = 0;
+        terminal.ybase = 40;
+
+        terminal.keyDown();
+
+        // Ensure that now the terminal is scrolled to bottom
+        assert.equal(terminal.ydisp, terminal.ybase);
+      });
+    });
   });
 
   describe('evaluateKeyEscapeSequence', function() {