use the correct this for active group and active tab

This commit is contained in:
Johannes 2022-03-17 10:15:27 +01:00
parent 119c82c427
commit d2336f07b7
No known key found for this signature in database
GPG key ID: 6DEF802A22264FCA
2 changed files with 59 additions and 2 deletions

View file

@ -37,7 +37,7 @@ class ExtHostEditorTabGroup {
if (tabDto.isActive) {
this._activeTabId = tabDto.id;
}
this._tabs.push(new ExtHostEditorTab(tabDto, proxy, this.activeTabId));
this._tabs.push(new ExtHostEditorTab(tabDto, proxy, () => this.activeTabId()));
}
}
@ -196,7 +196,7 @@ export class ExtHostEditorTabs implements IExtHostEditorTabs {
// Clears the tab groups array
this._tabGroups.groups.length = 0;
this._extHostTabGroups = tabGroups.map(tabGroup => {
const group = new ExtHostEditorTabGroup(tabGroup, this._proxy, this.activeGroupIdGetter);
const group = new ExtHostEditorTabGroup(tabGroup, this._proxy, () => this.activeGroupIdGetter());
return group;
});
for (const group of this._extHostTabGroups) {

View file

@ -260,4 +260,61 @@ suite('ExtHostEditorTabs', function () {
assert.strictEqual(apiTab1 === apiTab2, true);
});
test('Tab.isActive working', function () {
const extHostEditorTabs = new ExtHostEditorTabs(
SingleProxyRPCProtocol(new class extends mock<MainThreadEditorTabsShape>() {
// override/implement $moveTab or $closeTab
})
);
const tabDtoAAA: IEditorTabDto = {
id: 'AAA',
isActive: true,
isDirty: true,
isPinned: true,
label: 'label1',
resource: URI.parse('file://abc/AAA.txt'),
editorId: 'default',
viewColumn: 0,
additionalResourcesAndViewTypes: [],
kind: TabKind.Singular
};
const tabDtoBBB: IEditorTabDto = {
id: 'BBB',
isActive: false,
isDirty: true,
isPinned: true,
label: 'label1',
resource: URI.parse('file://abc/BBB.txt'),
editorId: 'default',
viewColumn: 0,
additionalResourcesAndViewTypes: [],
kind: TabKind.Singular
};
// single dirty tab
extHostEditorTabs.$acceptEditorTabModel([{
isActive: true,
viewColumn: 0,
groupId: 12,
tabs: [tabDtoAAA, tabDtoBBB]
}]);
let all = extHostEditorTabs.tabGroups.groups.map(group => group.tabs).flat();
assert.strictEqual(all.length, 2);
const activeTab1 = extHostEditorTabs.tabGroups.activeTabGroup?.activeTab;
assert.strictEqual(activeTab1?.resource?.toString(), URI.revive(tabDtoAAA.resource)?.toString());
assert.strictEqual(activeTab1?.isActive, true);
extHostEditorTabs.$acceptTabUpdate(12, { ...tabDtoBBB, isActive: true }); /// BBB is now active
const activeTab2 = extHostEditorTabs.tabGroups.activeTabGroup?.activeTab;
assert.strictEqual(activeTab2?.resource?.toString(), URI.revive(tabDtoBBB.resource)?.toString());
assert.strictEqual(activeTab2?.isActive, true);
assert.strictEqual(activeTab1?.isActive, false);
});
});