mirror of
https://git.proxmox.com/git/mirror_xterm.js
synced 2025-11-02 22:07:41 +00:00
Improve experience and add test
- Scroll to bottom on keydown (when scrolled up) - Add test to ensure above behavior
This commit is contained in:
parent
5e68acfc76
commit
0de3d839e6
13
src/xterm.js
13
src/xterm.js
@ -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;
|
||||
|
||||
19
test/test.js
19
test/test.js
@ -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() {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user