Skip to content

Commit 3889e52

Browse files
authored
Fix terminal split view disposable leaked (microsoft#241597)
Fixes microsoft#241596
1 parent 0110d56 commit 3889e52

File tree

4 files changed

+10
-8
lines changed

4 files changed

+10
-8
lines changed

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,9 @@ class SplitPaneContainer extends Disposable {
5252
}
5353

5454
private _createSplitView(): void {
55-
this._splitView = new SplitView(this._container, { orientation: this.orientation });
5655
this._splitViewDisposables.clear();
56+
this._splitView = new SplitView(this._container, { orientation: this.orientation });
57+
this._splitViewDisposables.add(this._splitView);
5758
this._splitViewDisposables.add(this._splitView.onDidSashReset(() => this._splitView.distributeViewSizes()));
5859
}
5960

@@ -180,8 +181,6 @@ class SplitPaneContainer extends Disposable {
180181
while (this._container.children.length > 0) {
181182
this._container.children[0].remove();
182183
}
183-
this._splitViewDisposables.clear();
184-
this._splitView.dispose();
185184

186185
// Create new split view with updated orientation
187186
this._createSplitView();
@@ -323,6 +322,7 @@ export class TerminalGroup extends Disposable implements ITerminalGroup {
323322
override dispose(): void {
324323
this._terminalInstances = [];
325324
this._onInstancesChanged.fire();
325+
this._splitPaneContainer?.dispose();
326326
super.dispose();
327327
}
328328

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ export class TerminalWidgetManager implements IDisposable {
2323
this._container.remove();
2424
this._container = undefined;
2525
}
26+
this._attached.forEach(w => w.dispose());
27+
this._attached.clear();
2628
}
2729

2830
attachWidget(widget: ITerminalWidget): IDisposable | undefined {

src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminal.accessibility.contribution.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import type { Terminal } from '@xterm/xterm';
77
import { Event } from '../../../../../base/common/event.js';
88
import { KeyCode, KeyMod } from '../../../../../base/common/keyCodes.js';
9-
import { Disposable, DisposableStore, IDisposable, MutableDisposable } from '../../../../../base/common/lifecycle.js';
9+
import { Disposable, DisposableStore, MutableDisposable } from '../../../../../base/common/lifecycle.js';
1010
import { isWindows } from '../../../../../base/common/platform.js';
1111
import { Position } from '../../../../../editor/common/core/position.js';
1212
import { localize2 } from '../../../../../nls.js';
@@ -68,7 +68,7 @@ export class TerminalAccessibleViewContribution extends Disposable implements IT
6868
private _bufferTracker: BufferContentTracker | undefined;
6969
private _bufferProvider: TerminalAccessibleBufferProvider | undefined;
7070
private _xterm: Pick<IXtermTerminal, 'shellIntegration' | 'getFont'> & { raw: Terminal } | undefined;
71-
private readonly _onDidRunCommand: MutableDisposable<IDisposable> = new MutableDisposable();
71+
private readonly _onDidRunCommand = this._register(new MutableDisposable());
7272

7373
constructor(
7474
private readonly _ctx: ITerminalContributionContext,
@@ -144,11 +144,11 @@ export class TerminalAccessibleViewContribution extends Disposable implements IT
144144
}
145145

146146
const capability = this._ctx.instance.capabilities.get(TerminalCapability.CommandDetection)!;
147-
this._onDidRunCommand.value = this._register(capability.onCommandExecuted(() => {
147+
this._onDidRunCommand.value = capability.onCommandExecuted(() => {
148148
if (this._ctx.instance.hasFocus) {
149149
this.show();
150150
}
151-
}));
151+
});
152152
}
153153

154154
private _isTerminalAccessibleViewOpen(): boolean {

src/vs/workbench/contrib/terminalContrib/developer/browser/terminal.developer.contribution.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ class DevModeContribution extends Disposable implements ITerminalContribution {
227227
}
228228

229229
private _xterm: IXtermTerminal & { raw: Terminal } | undefined;
230-
private readonly _activeDevModeDisposables = new MutableDisposable();
230+
private readonly _activeDevModeDisposables = this._register(new MutableDisposable());
231231
private _currentColor = 0;
232232

233233
private _state: DevModeContributionState = DevModeContributionState.Off;

0 commit comments

Comments
 (0)