@@ -9,6 +9,7 @@ import { IIconLabelValueOptions, IconLabel } from '../../../../base/browser/ui/i
99import { IKeyboardNavigationLabelProvider , IListVirtualDelegate } from '../../../../base/browser/ui/list/list.js' ;
1010import { IListAccessibilityProvider } from '../../../../base/browser/ui/list/listWidget.js' ;
1111import { IDataSource , ITreeNode , ITreeRenderer } from '../../../../base/browser/ui/tree/tree.js' ;
12+ import { disposableTimeout } from '../../../../base/common/async.js' ;
1213import { Emitter , Event } from '../../../../base/common/event.js' ;
1314import { FuzzyScore , createMatches } from '../../../../base/common/filters.js' ;
1415import { Disposable , DisposableStore , IDisposable , MutableDisposable , toDisposable } from '../../../../base/common/lifecycle.js' ;
@@ -124,13 +125,32 @@ class CustomEditorOutlineRenderer implements ITreeRenderer<CustomEditorOutlineEn
124125
125126 const menu = template . elementDisposables . add ( this . _menuService . createMenu ( MenuId . CustomEditorOutlineActionMenu , scopedContextKeyService ) ) ;
126127 const menuArg = { id : entry . id , uri : this . _resource } ;
128+
129+ // same fix as in notebookOutline setupToolbarListeners re #103926
130+ let dropdownIsVisible = false ;
131+ let deferredUpdate : ( ( ) => void ) | undefined ;
132+
127133 const actions = getActionBarActions ( menu . getActions ( { shouldForwardArgs : true , arg : menuArg } ) , g => / ^ i n l i n e / . test ( g ) ) ;
128134 toolbar . setActions ( actions . primary , actions . secondary ) ;
129135
130136 template . elementDisposables . add ( menu . onDidChange ( ( ) => {
131137 const actions = getActionBarActions ( menu . getActions ( { shouldForwardArgs : true , arg : menuArg } ) , g => / ^ i n l i n e / . test ( g ) ) ;
138+ if ( dropdownIsVisible ) {
139+ deferredUpdate = ( ) => toolbar . setActions ( actions . primary , actions . secondary ) ;
140+ return ;
141+ }
132142 toolbar . setActions ( actions . primary , actions . secondary ) ;
133143 } ) ) ;
144+
145+ template . elementDisposables . add ( toolbar . onDidChangeDropdownVisibility ( visible => {
146+ dropdownIsVisible = visible ;
147+ if ( deferredUpdate && ! visible ) {
148+ disposableTimeout ( ( ) => {
149+ deferredUpdate ?.( ) ;
150+ deferredUpdate = undefined ;
151+ } , 0 , template . elementDisposables ) ;
152+ }
153+ } ) ) ;
134154 }
135155 }
136156
@@ -370,6 +390,7 @@ class CustomEditorExtensionOutline implements IOutline<CustomEditorOutlineEntry>
370390 dispose ( ) : void {
371391 this . _loadCts ?. cancel ( ) ;
372392 this . _loadCts ?. dispose ( ) ;
393+ this . _providerService . releaseResource ( this . _viewType , this . _resource ) ;
373394 this . _disposables . dispose ( ) ;
374395 this . _onDidChange . dispose ( ) ;
375396 }
0 commit comments