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;
* @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;
}
};
/**
- * 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;
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() {