@@ -466,6 +466,8 @@ export class ViewsService extends Disposable implements IViewsService {
466466
467467 private readonly visibleViewContextKeys : Map < string , IContextKey < boolean > > ;
468468
469+ private readonly viewPaneContainers : Map < string , ViewPaneContainer > ;
470+
469471 constructor (
470472 @IViewDescriptorService private readonly viewDescriptorService : IViewDescriptorService ,
471473 @IPanelService private readonly panelService : IPanelService ,
@@ -477,6 +479,7 @@ export class ViewsService extends Disposable implements IViewsService {
477479 this . viewContainersRegistry = Registry . as < IViewContainersRegistry > ( ViewExtensions . ViewContainersRegistry ) ;
478480 this . viewDisposable = new Map < IViewDescriptor , IDisposable > ( ) ;
479481 this . visibleViewContextKeys = new Map < string , IContextKey < boolean > > ( ) ;
482+ this . viewPaneContainers = new Map < string , ViewPaneContainer > ( ) ;
480483
481484 this . _register ( toDisposable ( ( ) => {
482485 this . viewDisposable . forEach ( disposable => disposable . dispose ( ) ) ;
@@ -485,12 +488,16 @@ export class ViewsService extends Disposable implements IViewsService {
485488
486489 this . viewContainersRegistry . all . forEach ( viewContainer => this . onDidRegisterViewContainer ( viewContainer , this . viewContainersRegistry . getViewContainerLocation ( viewContainer ) ) ) ;
487490 this . _register ( this . viewContainersRegistry . onDidRegister ( ( { viewContainer, viewContainerLocation } ) => this . onDidRegisterViewContainer ( viewContainer , viewContainerLocation ) ) ) ;
491+
492+ this . _register ( this . viewContainersRegistry . onDidDeregister ( e => this . viewPaneContainers . delete ( e . viewContainer . id ) ) ) ;
488493 }
489494
490495 private registerViewPaneContainer ( viewPaneContainer : ViewPaneContainer ) : void {
491496 this . _register ( viewPaneContainer . onDidAddViews ( views => this . onViewsAdded ( views ) ) ) ;
492497 this . _register ( viewPaneContainer . onDidChangeViewVisibility ( view => this . onViewsVisibilityChanged ( view , view . isBodyVisible ( ) ) ) ) ;
493498 this . _register ( viewPaneContainer . onDidRemoveViews ( views => this . onViewsRemoved ( views ) ) ) ;
499+
500+ this . viewPaneContainers . set ( viewPaneContainer . getId ( ) , viewPaneContainer ) ;
494501 }
495502
496503 private onViewsAdded ( added : IView [ ] ) : void {
@@ -706,18 +713,7 @@ export class ViewsService extends Disposable implements IViewsService {
706713 return undefined ;
707714 }
708715
709- const location = this . viewContainersRegistry . getViewContainerLocation ( viewContainer ) ;
710-
711- let viewPaneContainer ;
712- if ( location === ViewContainerLocation . Sidebar ) {
713- const viewlet = this . viewletService . getInstantiatedViewlet ( viewContainer . id ) ;
714- viewPaneContainer = viewlet ?. getViewPaneContainer ( ) ;
715- } else if ( location === ViewContainerLocation . Panel ) {
716- const panel = this . panelService . getInstantiatedPanel ( viewContainer . id ) ;
717- viewPaneContainer = ( panel as IPaneComposite ) ?. getViewPaneContainer ( ) ;
718- }
719-
720- const view = viewPaneContainer ?. getView ( id ) ;
716+ const view = this . viewPaneContainers . get ( viewContainer . id ) ?. getView ( id ) ;
721717 return view ?. getProgressIndicator ( ) ;
722718 }
723719
0 commit comments