mirror of
https://github.com/wavetermdev/xterm.js.git
synced 2026-08-05 13:43:48 -07:00
Fix select all with no start and include content below viewport
This commit is contained in:
@@ -44,7 +44,7 @@ describe('SelectionManager', () => {
|
||||
window = w;
|
||||
document = window.document;
|
||||
buffer = new CircularList<any>(100);
|
||||
terminal = <any>{ cols: 80 };
|
||||
terminal = <any>{ cols: 80, rows: 2 };
|
||||
selectionManager = new TestSelectionManager(terminal, buffer, rowContainer, null);
|
||||
done();
|
||||
});
|
||||
@@ -153,4 +153,17 @@ describe('SelectionManager', () => {
|
||||
assert.deepEqual(selectionManager.model.finalSelectionEnd, [terminal.cols, 0], 'The actual selection spans the entire column');
|
||||
});
|
||||
});
|
||||
|
||||
describe('selectAll', () => {
|
||||
it('should select the entire buffer, beyond the viewport', () => {
|
||||
buffer.push(stringToRow('1'));
|
||||
buffer.push(stringToRow('2'));
|
||||
buffer.push(stringToRow('3'));
|
||||
buffer.push(stringToRow('4'));
|
||||
buffer.push(stringToRow('5'));
|
||||
selectionManager.selectAll();
|
||||
terminal.ybase = buffer.length - terminal.rows;
|
||||
assert.equal(selectionManager.selectionText, '1\n2\n3\n4\n5');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -160,7 +160,7 @@ export class SelectionManager extends EventEmitter {
|
||||
if (start[1] !== end[1]) {
|
||||
result.push(this._translateBufferLineToString(this._buffer.get(end[1]), true, 0, end[0]));
|
||||
}
|
||||
console.log('selectionText result: "' + result + '"');
|
||||
|
||||
return result.join('\n');
|
||||
}
|
||||
|
||||
|
||||
@@ -52,12 +52,12 @@ export class SelectionModel {
|
||||
* word selection and triple click line selection.
|
||||
*/
|
||||
public get finalSelectionEnd(): [number, number] {
|
||||
if (!this.selectionStart) {
|
||||
return null;
|
||||
if (this.isSelectAllActive) {
|
||||
return [this._terminal.cols - 1, this._terminal.ybase + this._terminal.rows - 1];
|
||||
}
|
||||
|
||||
if (this.isSelectAllActive) {
|
||||
return [this._terminal.cols - 1, this._terminal.ydisp + this._terminal.rows - 1];
|
||||
if (!this.selectionStart) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// Use the selection start if the end doesn't exist or they're reversed
|
||||
|
||||
Reference in New Issue
Block a user