diff --git a/src/vs/sessions/contrib/changes/browser/changesView.contribution.ts b/src/vs/sessions/contrib/changes/browser/changesView.contribution.ts index 9da044d818d..386fd6603fc 100644 --- a/src/vs/sessions/contrib/changes/browser/changesView.contribution.ts +++ b/src/vs/sessions/contrib/changes/browser/changesView.contribution.ts @@ -12,7 +12,7 @@ import { registerWorkbenchContribution2, WorkbenchPhase } from '../../../../work import { IViewContainersRegistry, ViewContainerLocation, IViewsRegistry, Extensions as ViewContainerExtensions, WindowVisibility } from '../../../../workbench/common/views.js'; import { CHANGES_VIEW_CONTAINER_ID, CHANGES_VIEW_ID, ChangesViewPane, ChangesViewPaneContainer } from './changesView.js'; import './changesViewActions.js'; -import { ToggleChangesViewContribution } from './toggleChangesView.js'; +import { ChangesViewController } from './changesViewController.js'; const changesViewIcon = registerIcon('changes-view-icon', Codicon.gitCompare, localize2('changesViewIcon', 'View icon for the Changes view.').value); @@ -42,4 +42,4 @@ viewsRegistry.registerViews([{ windowVisibility: WindowVisibility.Sessions }], changesViewContainer); -registerWorkbenchContribution2(ToggleChangesViewContribution.ID, ToggleChangesViewContribution, WorkbenchPhase.BlockRestore); +registerWorkbenchContribution2(ChangesViewController.ID, ChangesViewController, WorkbenchPhase.BlockRestore); diff --git a/src/vs/sessions/contrib/changes/browser/changesView.ts b/src/vs/sessions/contrib/changes/browser/changesView.ts index 5cfb9a5e66f..946be8667a6 100644 --- a/src/vs/sessions/contrib/changes/browser/changesView.ts +++ b/src/vs/sessions/contrib/changes/browser/changesView.ts @@ -342,6 +342,7 @@ export class ChangesViewPane extends ViewPane { super(options, keybindingService, contextMenuService, configurationService, contextKeyService, viewDescriptorService, instantiationService, openerService, themeService, hoverService); this.viewModel = this.instantiationService.createInstance(ChangesViewModel); + this._register(this.viewModel); // Version mode this._register(bindContextKey(changesVersionModeContextKey, this.scopedContextKeyService, reader => { @@ -353,7 +354,7 @@ export class ChangesViewPane extends ViewPane { return this.viewModel.viewModeObs.read(reader); })); - // Set chatSessionType on the view's context key service so ViewTitlev menu items + // Set chatSessionType on the view's context key service so ViewTitle menu items // can use it in their `when` clauses. Update reactively when the active session // changes. this._register(bindContextKey(ChatContextKeys.agentSessionType, this.scopedContextKeyService, reader => { @@ -623,8 +624,6 @@ export class ChangesViewPane extends ViewPane { if (this.actionsContainer) { dom.clearNode(this.actionsContainer); - const scopedInstantiationService = this.renderDisposables.add(this.instantiationService.createChild(new ServiceCollection([IContextKeyService, this.scopedContextKeyService]))); - this.renderDisposables.add(bindContextKey(ChatContextKeys.hasAgentSessionChanges, this.scopedContextKeyService, reader => { const { files } = topLevelStats.read(reader); return files > 0; @@ -646,6 +645,10 @@ export class ChangesViewPane extends ViewPane { return metadata?.pullRequestUrl !== undefined; })); + const scopedServiceCollection = new ServiceCollection([IContextKeyService, this.scopedContextKeyService]); + const scopedInstantiationService = this.instantiationService.createChild(scopedServiceCollection); + this.renderDisposables.add(scopedInstantiationService); + this.renderDisposables.add(autorun(reader => { const { added, removed } = topLevelStats.read(reader); const sessionResource = this.viewModel.activeSessionResourceObs.read(reader); diff --git a/src/vs/sessions/contrib/changes/browser/toggleChangesView.ts b/src/vs/sessions/contrib/changes/browser/changesViewController.ts similarity index 97% rename from src/vs/sessions/contrib/changes/browser/toggleChangesView.ts rename to src/vs/sessions/contrib/changes/browser/changesViewController.ts index ff3ee68fdcd..95a090d25cc 100644 --- a/src/vs/sessions/contrib/changes/browser/toggleChangesView.ts +++ b/src/vs/sessions/contrib/changes/browser/changesViewController.ts @@ -20,9 +20,9 @@ interface IPendingTurnState { readonly submittedAt: number; } -export class ToggleChangesViewContribution extends Disposable { +export class ChangesViewController extends Disposable { - static readonly ID = 'workbench.contrib.toggleChangesView'; + static readonly ID = 'workbench.contrib.changesViewController'; private readonly pendingTurnStateByResource = new ResourceMap();