Sync scroll bar instead of disabling on enter app mode

Fixes #286
This commit is contained in:
Daniel Imms
2016-09-25 01:50:49 -07:00
parent 26fd963fbd
commit c7a4881552
2 changed files with 5 additions and 26 deletions
-21
View File
@@ -55,13 +55,6 @@ Viewport.prototype.refresh = function(charSize) {
* Updates dimensions and synchronizes the scroll area if necessary.
*/
Viewport.prototype.syncScrollArea = function() {
if (this.isApplicationMode) {
// Fix scroll bar in application mode
this.lastRecordedBufferLength = this.terminal.rows;
this.refresh();
return;
}
if (this.lastRecordedBufferLength !== this.terminal.lines.length) {
// If buffer height changed
this.lastRecordedBufferLength = this.terminal.lines.length;
@@ -84,26 +77,12 @@ Viewport.prototype.syncScrollArea = function() {
}
};
/**
* Sets the application mode of the viewport.
* @param {boolean} isApplicationMode Sets whether the terminal is in application mode. true
* for application mode (DECKPAM) and false for normal mode (DECKPNM).
*/
Viewport.prototype.setApplicationMode = function(isApplicationMode) {
this.isApplicationMode = isApplicationMode;
this.syncScrollArea();
};
/**
* Handles scroll events on the viewport, calculating the new viewport and requesting the
* terminal to scroll to it.
* @param {Event} ev The scroll event.
*/
Viewport.prototype.onScroll = function(ev) {
if (this.isApplicationMode) {
// Scrolling via the scroll bar is disabled during application mode
return;
}
var newRow = Math.round(this.viewportElement.scrollTop / this.currentRowHeight);
var diff = newRow - this.terminal.ydisp;
this.terminal.scrollDisp(diff, true);
+5 -5
View File
@@ -1692,7 +1692,7 @@ Terminal.prototype.write = function(data) {
case '=':
this.log('Serial port requested application keypad.');
this.applicationKeypad = true;
this.viewport.setApplicationMode(true);
this.viewport.syncScrollArea();
this.state = normal;
break;
@@ -1700,7 +1700,7 @@ Terminal.prototype.write = function(data) {
case '>':
this.log('Switching back to normal keypad.');
this.applicationKeypad = false;
this.viewport.setApplicationMode(false);
this.viewport.syncScrollArea();
this.state = normal;
break;
@@ -4064,7 +4064,7 @@ Terminal.prototype.setMode = function(params) {
case 66:
this.log('Serial port requested application keypad.');
this.applicationKeypad = true;
this.viewport.setApplicationMode(true);
this.viewport.syncScrollArea();
break;
case 9: // X10 Mouse
// no release, no motion, no wheel, no modifiers.
@@ -4264,7 +4264,7 @@ Terminal.prototype.resetMode = function(params) {
case 66:
this.log('Switching back to normal keypad.');
this.applicationKeypad = false;
this.viewport.setApplicationMode(false);
this.viewport.syncScrollArea();
break;
case 9: // X10 Mouse
case 1000: // vt200 mouse
@@ -4551,7 +4551,7 @@ Terminal.prototype.softReset = function(params) {
this.originMode = false;
this.wraparoundMode = false; // autowrap
this.applicationKeypad = false; // ?
this.viewport.setApplicationMode(false);
this.viewport.syncScrollArea();
this.applicationCursor = false;
this.scrollTop = 0;
this.scrollBottom = this.rows - 1;