未验证 提交 b8131113 编写于 作者: B Benjamin Pasero 提交者: GitHub

views - buffer context key changes (#101798)

上级 2697636d
...@@ -206,16 +206,18 @@ export class ViewDescriptorService extends Disposable implements IViewDescriptor ...@@ -206,16 +206,18 @@ export class ViewDescriptorService extends Disposable implements IViewDescriptor
} }
private onDidRegisterViews(views: { views: IViewDescriptor[], viewContainer: ViewContainer }[]): void { private onDidRegisterViews(views: { views: IViewDescriptor[], viewContainer: ViewContainer }[]): void {
views.forEach(({ views, viewContainer }) => { this.contextKeyService.bufferChangeEvents(() => {
// When views are registered, we need to regroup them based on the cache views.forEach(({ views, viewContainer }) => {
const regroupedViews = this.regroupViews(viewContainer.id, views); // When views are registered, we need to regroup them based on the cache
const regroupedViews = this.regroupViews(viewContainer.id, views);
// Once they are grouped, try registering them which occurs // Once they are grouped, try registering them which occurs
// if the container has already been registered within this service // if the container has already been registered within this service
// or we can generate the container from the source view id // or we can generate the container from the source view id
this.registerGroupedViews(regroupedViews); this.registerGroupedViews(regroupedViews);
views.forEach(viewDescriptor => this.getOrCreateMovableViewContextKey(viewDescriptor).set(!!viewDescriptor.canMoveView)); views.forEach(viewDescriptor => this.getOrCreateMovableViewContextKey(viewDescriptor).set(!!viewDescriptor.canMoveView));
});
}); });
} }
...@@ -227,7 +229,9 @@ export class ViewDescriptorService extends Disposable implements IViewDescriptor ...@@ -227,7 +229,9 @@ export class ViewDescriptorService extends Disposable implements IViewDescriptor
// When views are registered, we need to regroup them based on the cache // When views are registered, we need to regroup them based on the cache
const regroupedViews = this.regroupViews(viewContainer.id, views); const regroupedViews = this.regroupViews(viewContainer.id, views);
this.deregisterGroupedViews(regroupedViews); this.deregisterGroupedViews(regroupedViews);
views.forEach(viewDescriptor => this.getOrCreateMovableViewContextKey(viewDescriptor).set(false)); this.contextKeyService.bufferChangeEvents(() => {
views.forEach(viewDescriptor => this.getOrCreateMovableViewContextKey(viewDescriptor).set(false));
});
} }
private regroupViews(containerId: string, views: IViewDescriptor[]): Map<string, { cachedContainerInfo?: ICachedViewContainerInfo, views: IViewDescriptor[] }> { private regroupViews(containerId: string, views: IViewDescriptor[]): Map<string, { cachedContainerInfo?: ICachedViewContainerInfo, views: IViewDescriptor[] }> {
...@@ -628,7 +632,9 @@ export class ViewDescriptorService extends Disposable implements IViewDescriptor ...@@ -628,7 +632,9 @@ export class ViewDescriptorService extends Disposable implements IViewDescriptor
const viewsToRegister = this.getViewsByContainer(viewContainer).filter(view => this.getDefaultContainerById(view.id) !== viewContainer); const viewsToRegister = this.getViewsByContainer(viewContainer).filter(view => this.getDefaultContainerById(view.id) !== viewContainer);
if (viewsToRegister.length) { if (viewsToRegister.length) {
this.addViews(viewContainer, viewsToRegister); this.addViews(viewContainer, viewsToRegister);
viewsToRegister.forEach(viewDescriptor => this.getOrCreateMovableViewContextKey(viewDescriptor).set(!!viewDescriptor.canMoveView)); this.contextKeyService.bufferChangeEvents(() => {
viewsToRegister.forEach(viewDescriptor => this.getOrCreateMovableViewContextKey(viewDescriptor).set(!!viewDescriptor.canMoveView));
});
} }
} }
...@@ -644,8 +650,10 @@ export class ViewDescriptorService extends Disposable implements IViewDescriptor ...@@ -644,8 +650,10 @@ export class ViewDescriptorService extends Disposable implements IViewDescriptor
} }
private onDidChangeActiveViews({ added, removed }: { added: ReadonlyArray<IViewDescriptor>, removed: ReadonlyArray<IViewDescriptor>; }): void { private onDidChangeActiveViews({ added, removed }: { added: ReadonlyArray<IViewDescriptor>, removed: ReadonlyArray<IViewDescriptor>; }): void {
added.forEach(viewDescriptor => this.getOrCreateActiveViewContextKey(viewDescriptor).set(true)); this.contextKeyService.bufferChangeEvents(() => {
removed.forEach(viewDescriptor => this.getOrCreateActiveViewContextKey(viewDescriptor).set(false)); added.forEach(viewDescriptor => this.getOrCreateActiveViewContextKey(viewDescriptor).set(true));
removed.forEach(viewDescriptor => this.getOrCreateActiveViewContextKey(viewDescriptor).set(false));
});
} }
private registerResetViewContainerAction(viewContainer: ViewContainer): IDisposable { private registerResetViewContainerAction(viewContainer: ViewContainer): IDisposable {
...@@ -677,9 +685,11 @@ export class ViewDescriptorService extends Disposable implements IViewDescriptor ...@@ -677,9 +685,11 @@ export class ViewDescriptorService extends Disposable implements IViewDescriptor
private addViews(container: ViewContainer, views: IViewDescriptor[], expandViews?: boolean): void { private addViews(container: ViewContainer, views: IViewDescriptor[], expandViews?: boolean): void {
// Update in memory cache // Update in memory cache
views.forEach(view => { this.contextKeyService.bufferChangeEvents(() => {
this.cachedViewInfo.set(view.id, { containerId: container.id }); views.forEach(view => {
this.getOrCreateDefaultViewLocationContextKey(view).set(this.getDefaultContainerById(view.id) === container); this.cachedViewInfo.set(view.id, { containerId: container.id });
this.getOrCreateDefaultViewLocationContextKey(view).set(this.getDefaultContainerById(view.id) === container);
});
}); });
this.getViewContainerModel(container).add(views.map(view => { return { viewDescriptor: view, collapsed: expandViews ? false : undefined }; })); this.getViewContainerModel(container).add(views.map(view => { return { viewDescriptor: view, collapsed: expandViews ? false : undefined }; }));
...@@ -687,7 +697,9 @@ export class ViewDescriptorService extends Disposable implements IViewDescriptor ...@@ -687,7 +697,9 @@ export class ViewDescriptorService extends Disposable implements IViewDescriptor
private removeViews(container: ViewContainer, views: IViewDescriptor[]): void { private removeViews(container: ViewContainer, views: IViewDescriptor[]): void {
// Set view default location keys to false // Set view default location keys to false
views.forEach(view => this.getOrCreateDefaultViewLocationContextKey(view).set(false)); this.contextKeyService.bufferChangeEvents(() => {
views.forEach(view => this.getOrCreateDefaultViewLocationContextKey(view).set(false));
});
// Remove the views // Remove the views
this.getViewContainerModel(container).remove(views); this.getViewContainerModel(container).remove(views);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册