Skip to content

Commit 6a9dbdf

Browse files
committed
Don't restore panel terminal if a group was recreated
1 parent c6cbe70 commit 6a9dbdf

File tree

3 files changed

+25
-19
lines changed

3 files changed

+25
-19
lines changed

src/vs/workbench/contrib/terminal/browser/terminal.ts

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -155,26 +155,29 @@ export interface ITerminalService extends ITerminalInstanceHost {
155155
readonly instances: readonly ITerminalInstance[];
156156
/** Gets detached terminal instances created via {@link createDetachedXterm}. */
157157
readonly detachedXterms: Iterable<IXtermTerminal>;
158-
configHelper: ITerminalConfigHelper;
159-
isProcessSupportRegistered: boolean;
158+
readonly configHelper: ITerminalConfigHelper;
159+
readonly defaultLocation: TerminalLocation;
160+
161+
readonly isProcessSupportRegistered: boolean;
160162
readonly connectionState: TerminalConnectionState;
161163
readonly whenConnected: Promise<void>;
162-
readonly defaultLocation: TerminalLocation;
164+
/** The number of restored terminal groups on startup. */
165+
readonly restoredGroupCount: number;
163166

164-
onDidChangeActiveGroup: Event<ITerminalGroup | undefined>;
165-
onDidDisposeGroup: Event<ITerminalGroup>;
166-
onDidCreateInstance: Event<ITerminalInstance>;
167-
onDidReceiveProcessId: Event<ITerminalInstance>;
168-
onDidChangeInstanceDimensions: Event<ITerminalInstance>;
169-
onDidMaximumDimensionsChange: Event<ITerminalInstance>;
170-
onDidRequestStartExtensionTerminal: Event<IStartExtensionTerminalRequest>;
171-
onDidChangeInstanceTitle: Event<ITerminalInstance | undefined>;
172-
onDidChangeInstanceIcon: Event<{ instance: ITerminalInstance; userInitiated: boolean }>;
173-
onDidChangeInstanceColor: Event<{ instance: ITerminalInstance; userInitiated: boolean }>;
174-
onDidChangeInstancePrimaryStatus: Event<ITerminalInstance>;
175-
onDidInputInstanceData: Event<ITerminalInstance>;
176-
onDidRegisterProcessSupport: Event<void>;
177-
onDidChangeConnectionState: Event<void>;
167+
readonly onDidChangeActiveGroup: Event<ITerminalGroup | undefined>;
168+
readonly onDidDisposeGroup: Event<ITerminalGroup>;
169+
readonly onDidCreateInstance: Event<ITerminalInstance>;
170+
readonly onDidReceiveProcessId: Event<ITerminalInstance>;
171+
readonly onDidChangeInstanceDimensions: Event<ITerminalInstance>;
172+
readonly onDidMaximumDimensionsChange: Event<ITerminalInstance>;
173+
readonly onDidRequestStartExtensionTerminal: Event<IStartExtensionTerminalRequest>;
174+
readonly onDidChangeInstanceTitle: Event<ITerminalInstance | undefined>;
175+
readonly onDidChangeInstanceIcon: Event<{ instance: ITerminalInstance; userInitiated: boolean }>;
176+
readonly onDidChangeInstanceColor: Event<{ instance: ITerminalInstance; userInitiated: boolean }>;
177+
readonly onDidChangeInstancePrimaryStatus: Event<ITerminalInstance>;
178+
readonly onDidInputInstanceData: Event<ITerminalInstance>;
179+
readonly onDidRegisterProcessSupport: Event<void>;
180+
readonly onDidChangeConnectionState: Event<void>;
178181

179182
/**
180183
* Creates a terminal.

src/vs/workbench/contrib/terminal/browser/terminalService.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ export class TerminalService implements ITerminalService {
8484
private readonly _whenConnected = new DeferredPromise<void>();
8585
get whenConnected(): Promise<void> { return this._whenConnected.p; }
8686

87+
private _restoredGroupCount: number = 0;
88+
get restoredGroupCount(): number { return this._restoredGroupCount; }
89+
8790
get configHelper(): ITerminalConfigHelper { return this._configHelper; }
8891
get instances(): ITerminalInstance[] {
8992
return this._terminalGroupService.instances.concat(this._terminalEditorService.instances);
@@ -447,7 +450,7 @@ export class TerminalService implements ITerminalService {
447450
mark('code/terminal/didGetTerminalLayoutInfo');
448451
if (layoutInfo && layoutInfo.tabs.length > 0) {
449452
mark('code/terminal/willRecreateTerminalGroups');
450-
await this._recreateTerminalGroups(layoutInfo);
453+
this._restoredGroupCount = await this._recreateTerminalGroups(layoutInfo);
451454
mark('code/terminal/didRecreateTerminalGroups');
452455
}
453456
// now that terminals have been restored,

src/vs/workbench/contrib/terminal/browser/terminalView.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ export class TerminalViewPane extends ViewPane {
126126
}
127127

128128
private _initializeTerminal() {
129-
if (this.isBodyVisible() && this._terminalService.isProcessSupportRegistered && this._terminalService.connectionState === TerminalConnectionState.Connected && !this._terminalGroupService.groups.length) {
129+
if (this.isBodyVisible() && this._terminalService.isProcessSupportRegistered && this._terminalService.connectionState === TerminalConnectionState.Connected && this._terminalService.restoredGroupCount === 0) {
130130
this._terminalService.createTerminal({ location: TerminalLocation.Panel });
131131
}
132132
}

0 commit comments

Comments
 (0)