});
});
});
+
+ describe('row and column increased', () => {
+ it('should resize properly', () => {
+ buffer.fillViewportRows();
+ buffer.resize(INIT_COLS + 5, INIT_ROWS + 5);
+ assert.equal(buffer.lines.length, INIT_ROWS + 5);
+ for (let i = 0; i < INIT_ROWS + 5; i++) {
+ assert.equal(buffer.lines.get(i).length, INIT_COLS + 5);
+ }
+ });
+ });
});
});
if (this._terminal.cols < newCols) {
const ch: [number, string, number] = [this._terminal.defAttr, ' ', 1]; // does xterm use the default attr?
for (let i = 0; i < this._lines.length; i++) {
+ // TODO: This should be removed, with tests setup for the case that was
+ // causing the underlying bug, see https://github.com/sourcelair/xterm.js/issues/824
if (this._lines.get(i) === undefined) {
- this._lines.set(i, this._terminal.blankLine());
+ this._lines.set(i, this._terminal.blankLine(undefined, undefined, newCols));
}
while (this._lines.get(i).length < newCols) {
this._lines.get(i).push(ch);
} else {
// Add a blank line if there is no buffer left at the top to scroll to, or if there
// are blank lines after the cursor
- this._lines.push(this._terminal.blankLine());
+ this._lines.push(this._terminal.blankLine(undefined, undefined, newCols));
}
}
}
emit(event: string, data: any);
reset(): void;
showCursor(): void;
- blankLine(cur?: boolean, isWrapped?: boolean);
+ blankLine(cur?: boolean, isWrapped?: boolean, cols?: number);
}
export interface IBuffer {
showCursor(): void {
throw new Error('Method not implemented.');
}
- blankLine(cur?: boolean, isWrapped?: boolean) {
+ blankLine(cur?: boolean, isWrapped?: boolean, cols?: number) {
const line = [];
- for (let i = 0; i < this.cols; i++) {
+ cols = cols || this.cols;
+ for (let i = 0; i < cols; i++) {
line.push([0, ' ', 1]);
}
return line;
* @param {number} cur First bunch of data for each "blank" character.
* @param {boolean} isWrapped Whether the new line is wrapped from the previous line.
*/
-Terminal.prototype.blankLine = function(cur, isWrapped) {
+Terminal.prototype.blankLine = function(cur, isWrapped, cols) {
var attr = cur
? this.eraseAttr()
: this.defAttr;
line.isWrapped = isWrapped;
}
- for (; i < this.cols; i++) {
+ cols = cols || this.cols;
+ for (; i < cols; i++) {
line[i] = ch;
}