This commit is contained in:
Logan Ramos 2021-06-28 11:25:15 -04:00
parent d1bb28cb08
commit 5b29adfa24
No known key found for this signature in database
GPG key ID: D9CCFF14F0B18183
2 changed files with 97 additions and 3 deletions

View file

@ -6,7 +6,7 @@
import { AbstractSideBySideEditorInputSerializer, SideBySideEditorInput } from 'vs/workbench/common/editor/sideBySideEditorInput';
import { EditorInput } from 'vs/workbench/common/editor/editorInput';
import { EditorModel } from 'vs/workbench/common/editor/editorModel';
import { TEXT_DIFF_EDITOR_ID, BINARY_DIFF_EDITOR_ID, Verbosity, IEditorDescriptor, IEditorPane, GroupIdentifier, IResourceDiffEditorInput, IEditorInput, IUntypedEditorInput, DEFAULT_EDITOR_ASSOCIATION, UntypedEditorContext } from 'vs/workbench/common/editor';
import { TEXT_DIFF_EDITOR_ID, BINARY_DIFF_EDITOR_ID, Verbosity, IEditorDescriptor, IEditorPane, GroupIdentifier, IResourceDiffEditorInput, IEditorInput, IUntypedEditorInput, DEFAULT_EDITOR_ASSOCIATION, UntypedEditorContext, isResourceDiffEditorInput } from 'vs/workbench/common/editor';
import { BaseTextEditorModel } from 'vs/workbench/common/editor/textEditorModel';
import { DiffEditorModel } from 'vs/workbench/common/editor/diffEditorModel';
import { TextDiffEditorModel } from 'vs/workbench/common/editor/textDiffEditorModel';
@ -154,6 +154,10 @@ export class DiffEditorInput extends SideBySideEditorInput {
}
override matches(otherInput: IEditorInput | IUntypedEditorInput): boolean {
if (isResourceDiffEditorInput(otherInput)) {
return this.modifiedInput.matches(otherInput.modifiedInput) && this.originalInput.matches(otherInput.originalInput);
}
if (!super.matches(otherInput)) {
return false;
}

View file

@ -5,7 +5,7 @@
import * as assert from 'assert';
import { EditorGroupModel, ISerializedEditorGroupModel, EditorCloseEvent } from 'vs/workbench/common/editor/editorGroupModel';
import { EditorExtensions, IEditorInputFactoryRegistry, IFileEditorInput, IEditorInputSerializer, CloseDirection, EditorsOrder } from 'vs/workbench/common/editor';
import { EditorExtensions, IEditorInputFactoryRegistry, IFileEditorInput, IEditorInputSerializer, CloseDirection, EditorsOrder, IResourceDiffEditorInput } from 'vs/workbench/common/editor';
import { URI } from 'vs/base/common/uri';
import { TestLifecycleService, workbenchInstantiationService } from 'vs/workbench/test/browser/workbenchTestServices';
import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService';
@ -296,7 +296,97 @@ suite('EditorGroupModel', () => {
assert.ok(!group.isActive(untypedNonActiveInput));
});
test('contains()', function () {
test('contains() - untyped', function () {
const group = createEditorGroupModel();
const instantiationService = workbenchInstantiationService();
const input1 = input('input1', false, URI.file('/input1'));
const input2 = input('input2', false, URI.file('/input2'));
const untypedInput1 = { resource: URI.file('/input1'), options: { override: 'input1' } };
const untypedInput2 = { resource: URI.file('/input2'), options: { override: 'input2' } };
const diffInput1 = instantiationService.createInstance(DiffEditorInput, 'name', 'description', input1, input2, undefined);
const diffInput2 = instantiationService.createInstance(DiffEditorInput, 'name', 'description', input2, input1, undefined);
const untypedDiffInput1: IResourceDiffEditorInput = {
originalInput: untypedInput1,
modifiedInput: untypedInput2
};
const untypedDiffInput2: IResourceDiffEditorInput = {
originalInput: untypedInput2,
modifiedInput: untypedInput1
};
group.openEditor(input1, { pinned: true, active: true });
assert.strictEqual(group.contains(untypedInput1), true);
assert.strictEqual(group.contains(untypedInput1, { strictEquals: true }), false);
assert.strictEqual(group.contains(untypedInput1, { supportSideBySide: true }), true);
assert.strictEqual(group.contains(untypedInput2), false);
assert.strictEqual(group.contains(untypedInput2, { strictEquals: true }), false);
assert.strictEqual(group.contains(untypedInput2, { supportSideBySide: true }), false);
assert.strictEqual(group.contains(untypedDiffInput1), false);
assert.strictEqual(group.contains(untypedDiffInput2), false);
group.openEditor(input2, { pinned: true, active: true });
assert.strictEqual(group.contains(untypedInput1), true);
assert.strictEqual(group.contains(untypedInput2), true);
assert.strictEqual(group.contains(untypedDiffInput1), false);
assert.strictEqual(group.contains(untypedDiffInput2), false);
group.openEditor(diffInput1, { pinned: true, active: true });
assert.strictEqual(group.contains(untypedInput1), true);
assert.strictEqual(group.contains(untypedInput2), true);
assert.strictEqual(group.contains(untypedDiffInput1), true);
assert.strictEqual(group.contains(untypedDiffInput2), false);
group.openEditor(diffInput2, { pinned: true, active: true });
assert.strictEqual(group.contains(untypedInput1), true);
assert.strictEqual(group.contains(untypedInput2), true);
assert.strictEqual(group.contains(untypedDiffInput1), true);
assert.strictEqual(group.contains(untypedDiffInput2), true);
group.closeEditor(input1);
assert.strictEqual(group.contains(untypedInput1), false);
assert.strictEqual(group.contains(untypedInput1, { supportSideBySide: true }), true);
assert.strictEqual(group.contains(untypedInput2), true);
assert.strictEqual(group.contains(untypedDiffInput1), true);
assert.strictEqual(group.contains(untypedDiffInput2), true);
group.closeEditor(input2);
assert.strictEqual(group.contains(untypedInput1), false);
assert.strictEqual(group.contains(untypedInput1, { supportSideBySide: true }), true);
assert.strictEqual(group.contains(untypedInput2), false);
assert.strictEqual(group.contains(untypedInput2, { supportSideBySide: true }), true);
assert.strictEqual(group.contains(untypedDiffInput1), true);
assert.strictEqual(group.contains(untypedDiffInput2), true);
group.closeEditor(diffInput1);
assert.strictEqual(group.contains(untypedInput1), false);
assert.strictEqual(group.contains(untypedInput1, { supportSideBySide: true }), true);
assert.strictEqual(group.contains(untypedInput2), false);
assert.strictEqual(group.contains(untypedInput2, { supportSideBySide: true }), true);
assert.strictEqual(group.contains(untypedDiffInput1), false);
assert.strictEqual(group.contains(untypedDiffInput2), true);
group.closeEditor(diffInput2);
assert.strictEqual(group.contains(untypedInput1), false);
assert.strictEqual(group.contains(untypedInput1, { supportSideBySide: true }), false);
assert.strictEqual(group.contains(untypedInput2), false);
assert.strictEqual(group.contains(untypedInput2, { supportSideBySide: true }), false);
assert.strictEqual(group.contains(untypedDiffInput1), false);
assert.strictEqual(group.contains(untypedDiffInput2), false);
});
test('contains()', () => {
const group = createEditorGroupModel();
const instantiationService = workbenchInstantiationService();