fix buffers not clearing

This commit is contained in:
meganrogge
2022-02-04 16:11:04 -06:00
parent a63890e627
commit e9913522ac
3 changed files with 17 additions and 2 deletions
+14 -1
View File
@@ -16,6 +16,7 @@ import { DEFAULT_CHARSET } from 'common/data/Charsets';
import { ExtendedAttrs } from 'common/buffer/AttributeData';
export const MAX_BUFFER_SIZE = 4294967295; // 2^32 - 1
const enum BufferState { CLEARING = 'clearing' }
/**
* This class represents a terminal buffer (an internal state of the terminal), where the
@@ -43,6 +44,7 @@ export class Buffer implements IBuffer {
private _whitespaceCell: ICellData = CellData.fromCharData([0, WHITESPACE_CELL_CHAR, WHITESPACE_CELL_WIDTH, WHITESPACE_CELL_CODE]);
private _cols: number;
private _rows: number;
private _state: string | undefined;
constructor(
private _hasScrollback: boolean,
@@ -584,6 +586,15 @@ export class Buffer implements IBuffer {
return x >= this._cols ? this._cols - 1 : x < 0 ? 0 : x;
}
public clearMarkers(): void {
this._state = BufferState.CLEARING;
for (const marker of this.markers) {
marker.dispose();
}
this.markers = [];
this._state = undefined;
}
public addMarker(y: number): Marker {
const marker = new Marker(y);
this.markers.push(marker);
@@ -615,7 +626,9 @@ export class Buffer implements IBuffer {
}
private _removeMarker(marker: Marker): void {
this.markers.splice(this.markers.indexOf(marker), 1);
if (this._state !== BufferState.CLEARING) {
this.markers.splice(this.markers.indexOf(marker), 1);
}
}
public iterator(trimRight: boolean, startIndex?: number, endIndex?: number, startOverscan?: number, endOverscan?: number): IBufferStringIterator {