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:51:05 +0300
committerGitHub <noreply@github.com>2021-07-15 00:51:05 +0300
commitc3f126316369cd610563c75b1b1725e0679adfb3 (patch)
tree90597dfe20e9929f8a48ad3cf98ee2cb52b2da9d
parent268e9daeec7fd73f5dc078a5d45bbb629dde3b4e (diff)
parent5e159d1b9005a9041109a10fad0504518c75db07 (diff)
Merge pull request #128700 from microsoft/tyriar/r158_1283421.58.2release/1.58
Fallback to 80x30 dimensions in terminal
-rw-r--r--src/vs/workbench/contrib/terminal/browser/terminalInstance.ts24
1 files changed, 19 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..1824f9b6695 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(),
@@ -1058,6 +1060,11 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
this._wrapperElement.classList.toggle('active', visible);
}
if (visible && this._xterm && this._xtermCore) {
+ // Resize to re-evaluate dimensions, this will ensure when switching to a terminal it is
+ // using the most up to date dimensions (eg. when terminal is created in the background
+ // using cached dimensions of a split terminal).
+ this._resize();
+
// Trigger a manual scroll event which will sync the viewport and scroll bar. This is
// necessary if the number of rows in the terminal has decreased while it was in the
// background since scrollTop changes take no effect but the terminal's position does
@@ -1159,8 +1166,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);
}