Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/microsoft/vscode.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Imms <2193314+Tyriar@users.noreply.github.com>2021-07-15 00:41:40 +0300
committerDaniel Imms <2193314+Tyriar@users.noreply.github.com>2021-07-15 00:41:40 +0300
commit3bea1f0db371a7c7e90a08725c442af3a75cdede (patch)
treea2cc4f9bb0331690b0259c861f16cda30a6b0702
parent268e9daeec7fd73f5dc078a5d45bbb629dde3b4e (diff)
Fallback to 80x30 dimensions in terminal
This fixes an issue where when the terminal would be created without a container it initializes with 0x0 dimensions which gets set to the minimum of 2x1 instead of the expected default of 80x30 (which node-pty respects). This 80x30 is now hardcoded in VS Code. Fixes #128342
-rw-r--r--src/vs/workbench/contrib/terminal/browser/terminalInstance.ts19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts b/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts
index 7a68ad1cf54..e22c8d14b42 100644
--- a/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts
+++ b/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts
@@ -79,7 +79,10 @@ const enum Constants {
* terminal process. This period helps ensure the terminal has good initial dimensions to work
* with if it's going to be a foreground terminal.
*/
- WaitForContainerThreshold = 100
+ WaitForContainerThreshold = 100,
+
+ DefaultCols = 80,
+ DefaultRows = 30,
}
let xtermConstructor: Promise<typeof XTermTerminal> | undefined;
@@ -538,9 +541,8 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
const editorOptions = this._configurationService.getValue<IEditorOptions>('editor');
const xterm = new Terminal({
- // TODO: Replace null with undefined when https://github.com/xtermjs/xterm.js/issues/3329 is resolved
- cols: this._cols || null as any,
- rows: this._rows || null as any,
+ cols: this._cols || Constants.DefaultCols,
+ rows: this._rows || Constants.DefaultRows,
altClickMovesCursor: config.altClickMovesCursor && editorOptions.multiCursorModifier === 'alt',
scrollback: config.scrollback,
theme: this._getXtermTheme(),
@@ -1159,8 +1161,15 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
if (this._isDisposed) {
return;
}
+
+ // Re-evaluate dimensions if the container has been set since the xterm instance was created
+ if (this._container && this._cols === 0 && this._rows === 0) {
+ this._initDimensions();
+ this._xterm?.resize(this._cols || Constants.DefaultCols, this._rows || Constants.DefaultRows);
+ }
+
const hadIcon = !!this.shellLaunchConfig.icon;
- await this._processManager.createProcess(this._shellLaunchConfig, this._cols, this._rows, this._accessibilityService.isScreenReaderOptimized()).then(error => {
+ await this._processManager.createProcess(this._shellLaunchConfig, this._cols || Constants.DefaultCols, this._rows || Constants.DefaultRows, this._accessibilityService.isScreenReaderOptimized()).then(error => {
if (error) {
this._onProcessExit(error);
}