Closes #126887
This commit is contained in:
parent
d1bb28cb08
commit
5b29adfa24
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
Loading…
Reference in a new issue