Skip to content

Commit 3635717

Browse files
committed
1 parent 27293e8 commit 3635717

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

src/vs/workbench/browser/parts/editor/textDiffEditor.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import { ITextResourceConfigurationChangeEvent, ITextResourceConfigurationServic
2020
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
2121
import { IThemeService } from 'vs/platform/theme/common/themeService';
2222
import { TextFileOperationError, TextFileOperationResult } from 'vs/workbench/services/textfile/common/textfiles';
23-
import { ScrollType, IDiffEditorViewState, IDiffEditorModel } from 'vs/editor/common/editorCommon';
23+
import { ScrollType, IDiffEditorViewState, IDiffEditorModel, IDiffEditorViewModel } from 'vs/editor/common/editorCommon';
2424
import { Registry } from 'vs/platform/registry/common/platform';
2525
import { URI } from 'vs/base/common/uri';
2626
import { IEditorGroup, IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService';
@@ -91,7 +91,13 @@ export class TextDiffEditor extends AbstractTextEditor<IDiffEditorViewState> imp
9191
return this.diffEditorControl?.getModifiedEditor();
9292
}
9393

94+
private _previousViewModel: IDiffEditorViewModel | null = null;
95+
9496
override async setInput(input: DiffEditorInput, options: ITextEditorOptions | undefined, context: IEditorOpenContext, token: CancellationToken): Promise<void> {
97+
if (this._previousViewModel) {
98+
this._previousViewModel.dispose();
99+
this._previousViewModel = null;
100+
}
95101

96102
// Cleanup previous things associated with the input
97103
this.inputLifecycleStopWatch = undefined;
@@ -118,6 +124,7 @@ export class TextDiffEditor extends AbstractTextEditor<IDiffEditorViewState> imp
118124
const resolvedDiffEditorModel = resolvedModel as TextDiffEditorModel;
119125

120126
const vm = resolvedDiffEditorModel.textDiffEditorModel ? control.createViewModel(resolvedDiffEditorModel.textDiffEditorModel) : null;
127+
this._previousViewModel = vm;
121128
await vm?.waitForDiff();
122129
control.setModel(vm);
123130

@@ -300,6 +307,11 @@ export class TextDiffEditor extends AbstractTextEditor<IDiffEditorViewState> imp
300307
}
301308

302309
override clearInput(): void {
310+
if (this._previousViewModel) {
311+
this._previousViewModel.dispose();
312+
this._previousViewModel = null;
313+
}
314+
303315
super.clearInput();
304316

305317
// Log input lifecycle telemetry

0 commit comments

Comments
 (0)