diff --git a/src/vs/workbench/common/editor/editorGroup.ts b/src/vs/workbench/common/editor/editorGroup.ts index 8d7410ac55ec08f46f4b0f54fa51b6a8f314a210..d1580899ad502875a649bb74acf66f305de86f25 100644 --- a/src/vs/workbench/common/editor/editorGroup.ts +++ b/src/vs/workbench/common/editor/editorGroup.ts @@ -724,12 +724,19 @@ export class EditorGroup extends Disposable { clone(): EditorGroup { const group = this.instantiationService.createInstance(EditorGroup, undefined); + + // Copy over group properties group.editors = this.editors.slice(0); group.mru = this.mru.slice(0); group.preview = this.preview; group.active = this.active; group.sticky = this.sticky; + // Ensure to register listeners for each editor + for (const editor of group.editors) { + group.registerEditorListeners(editor); + } + return group; } diff --git a/src/vs/workbench/test/browser/parts/editor/editorGroups.test.ts b/src/vs/workbench/test/browser/parts/editor/editorGroups.test.ts index 20ca1df27f6459a98f9c7affbba58b95319670eb..a75df3f3f87e931c4ccc7babc0f3bab9746a8f94 100644 --- a/src/vs/workbench/test/browser/parts/editor/editorGroups.test.ts +++ b/src/vs/workbench/test/browser/parts/editor/editorGroups.test.ts @@ -239,7 +239,7 @@ suite('Workbench editor groups', () => { test('Clone Group', function () { const group = createGroup(); - const input1 = input(); + const input1 = input() as TestEditorInput; const input2 = input(); const input3 = input(); @@ -256,6 +256,11 @@ suite('Workbench editor groups', () => { assert.notEqual(group.id, clone.id); assert.equal(clone.count, 3); + let didEditorLabelChange = false; + const toDispose = clone.onDidEditorLabelChange(() => didEditorLabelChange = true); + input1.setLabel(); + assert.ok(didEditorLabelChange); + assert.equal(clone.isPinned(input1), true); assert.equal(clone.isActive(input1), false); assert.equal(clone.isSticky(input1), false); @@ -267,6 +272,8 @@ suite('Workbench editor groups', () => { assert.equal(clone.isPinned(input3), false); assert.equal(clone.isActive(input3), true); assert.equal(clone.isSticky(input3), false); + + toDispose.dispose(); }); test('contains()', function () {