Skip to content

Commit 56adc7d

Browse files
committed
1 parent 8ea4e88 commit 56adc7d

1 file changed

Lines changed: 15 additions & 8 deletions

File tree

src/vs/workbench/contrib/scm/browser/dirtydiffDecorator.ts

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { Event, Emitter } from 'vs/base/common/event';
1212
import * as ext from 'vs/workbench/common/contributions';
1313
import { CodeEditorWidget } from 'vs/editor/browser/widget/codeEditorWidget';
1414
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
15-
import { ITextModelService } from 'vs/editor/common/services/resolverService';
15+
import { IResolvedTextEditorModel, ITextModelService } from 'vs/editor/common/services/resolverService';
1616
import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
1717
import { IEditorWorkerService } from 'vs/editor/common/services/editorWorkerService';
1818
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
@@ -46,7 +46,7 @@ import { IMarginData } from 'vs/editor/browser/controller/mouseTarget';
4646
import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService';
4747
import { ISplice } from 'vs/base/common/sequence';
4848
import { createStyleSheet } from 'vs/base/browser/dom';
49-
import { ITextFileEditorModel, IResolvedTextFileEditorModel, ITextFileService } from 'vs/workbench/services/textfile/common/textfiles';
49+
import { ITextFileEditorModel, IResolvedTextFileEditorModel, ITextFileService, isTextFileEditorModel } from 'vs/workbench/services/textfile/common/textfiles';
5050
import { EncodingMode } from 'vs/workbench/common/editor';
5151

5252
class DiffActionRunner extends ActionRunner {
@@ -1017,7 +1017,8 @@ export async function getOriginalResource(scmService: ISCMService, uri: URI): Pr
10171017

10181018
export class DirtyDiffModel extends Disposable {
10191019

1020-
private _originalModel: IResolvedTextFileEditorModel | null = null;
1020+
private _originalResource: URI | null = null;
1021+
private _originalModel: IResolvedTextEditorModel | null = null;
10211022
private _model: ITextFileEditorModel;
10221023
get original(): ITextModel | null { return this._originalModel?.textEditorModel || null; }
10231024
get modified(): ITextModel | null { return this._model.textEditorModel || null; }
@@ -1049,6 +1050,7 @@ export class DirtyDiffModel extends Disposable {
10491050

10501051
this._register(this._model.onDidChangeEncoding(() => {
10511052
this.diffDelayer.cancel();
1053+
this._originalResource = null;
10521054
this._originalModel = null;
10531055
this._originalURIPromise = undefined;
10541056
this.setChanges([]);
@@ -1128,11 +1130,12 @@ export class DirtyDiffModel extends Disposable {
11281130
}
11291131

11301132
if (!originalUri) {
1133+
this._originalResource = null;
11311134
this._originalModel = null;
11321135
return null;
11331136
}
11341137

1135-
if (this._originalModel && this._originalModel.resource.toString() === originalUri.toString()) {
1138+
if (this._originalResource?.toString() === originalUri.toString()) {
11361139
return originalUri;
11371140
}
11381141

@@ -1142,12 +1145,15 @@ export class DirtyDiffModel extends Disposable {
11421145
return null;
11431146
}
11441147

1145-
this._originalModel = ref.object as IResolvedTextFileEditorModel;
1148+
this._originalResource = originalUri;
1149+
this._originalModel = ref.object;
11461150

1147-
const encoding = this._model.getEncoding();
1151+
if (isTextFileEditorModel(this._originalModel)) {
1152+
const encoding = this._model.getEncoding();
11481153

1149-
if (encoding) {
1150-
this._originalModel.setEncoding(encoding, EncodingMode.Decode);
1154+
if (encoding) {
1155+
this._originalModel.setEncoding(encoding, EncodingMode.Decode);
1156+
}
11511157
}
11521158

11531159
this.originalModelDisposables.clear();
@@ -1214,6 +1220,7 @@ export class DirtyDiffModel extends Disposable {
12141220
super.dispose();
12151221

12161222
this._disposed = true;
1223+
this._originalResource = null;
12171224
this._originalModel = null;
12181225
this.diffDelayer.cancel();
12191226
this.repositoryDisposables.forEach(d => dispose(d));

0 commit comments

Comments
 (0)