@@ -9,7 +9,7 @@ import { Action, IActionRunner, IAction } from 'vs/base/common/actions';
99import { ActionBar , ActionsOrientation , IActionViewItemProvider } from 'vs/base/browser/ui/actionbar/actionbar' ;
1010import { IContextMenuProvider , DropdownMenuActionViewItem } from 'vs/base/browser/ui/dropdown/dropdown' ;
1111import { ResolvedKeybinding } from 'vs/base/common/keyCodes' ;
12- import { Disposable } from 'vs/base/common/lifecycle' ;
12+ import { Disposable , MutableDisposable } from 'vs/base/common/lifecycle' ;
1313import { AnchorAlignment } from 'vs/base/browser/ui/contextview/contextview' ;
1414import { withNullAsUndefined } from 'vs/base/common/types' ;
1515
@@ -32,7 +32,7 @@ export class ToolBar extends Disposable {
3232 private options : IToolBarOptions ;
3333 private actionBar : ActionBar ;
3434 private toggleMenuAction : ToggleMenuAction ;
35- private toggleMenuActionViewItem ?: DropdownMenuActionViewItem ;
35+ private toggleMenuActionViewItem = this . _register ( new MutableDisposable < DropdownMenuActionViewItem > ( ) ) ;
3636 private hasSecondaryActions : boolean ;
3737 private lookupKeybindings : boolean ;
3838
@@ -42,7 +42,7 @@ export class ToolBar extends Disposable {
4242 this . options = options ;
4343 this . lookupKeybindings = typeof this . options . getKeyBinding === 'function' ;
4444
45- this . toggleMenuAction = this . _register ( new ToggleMenuAction ( ( ) => this . toggleMenuActionViewItem && this . toggleMenuActionViewItem . show ( ) , options . toggleMenuTitle ) ) ;
45+ this . toggleMenuAction = this . _register ( new ToggleMenuAction ( ( ) => this . toggleMenuActionViewItem . value && this . toggleMenuActionViewItem . value . show ( ) , options . toggleMenuTitle ) ) ;
4646
4747 let element = document . createElement ( 'div' ) ;
4848 element . className = 'monaco-toolbar' ;
@@ -57,13 +57,8 @@ export class ToolBar extends Disposable {
5757 // Return special action item for the toggle menu action
5858 if ( action . id === ToggleMenuAction . ID ) {
5959
60- // Dispose old
61- if ( this . toggleMenuActionViewItem ) {
62- this . toggleMenuActionViewItem . dispose ( ) ;
63- }
64-
6560 // Create new
66- this . toggleMenuActionViewItem = new DropdownMenuActionViewItem (
61+ this . toggleMenuActionViewItem . value = new DropdownMenuActionViewItem (
6762 action ,
6863 ( < ToggleMenuAction > action ) . menuActions ,
6964 contextMenuProvider ,
@@ -73,9 +68,9 @@ export class ToolBar extends Disposable {
7368 'toolbar-toggle-more' ,
7469 this . options . anchorAlignmentProvider
7570 ) ;
76- this . toggleMenuActionViewItem ! . setActionContext ( this . actionBar . context ) ;
71+ this . toggleMenuActionViewItem . value . setActionContext ( this . actionBar . context ) ;
7772
78- return this . toggleMenuActionViewItem ;
73+ return this . toggleMenuActionViewItem . value ;
7974 }
8075
8176 return options . actionViewItemProvider ? options . actionViewItemProvider ( action ) : undefined ;
@@ -93,8 +88,8 @@ export class ToolBar extends Disposable {
9388
9489 set context ( context : any ) {
9590 this . actionBar . context = context ;
96- if ( this . toggleMenuActionViewItem ) {
97- this . toggleMenuActionViewItem . setActionContext ( context ) ;
91+ if ( this . toggleMenuActionViewItem . value ) {
92+ this . toggleMenuActionViewItem . value . setActionContext ( context ) ;
9893 }
9994 }
10095
@@ -154,15 +149,6 @@ export class ToolBar extends Disposable {
154149 }
155150 } ;
156151 }
157-
158- dispose ( ) : void {
159- if ( this . toggleMenuActionViewItem ) {
160- this . toggleMenuActionViewItem . dispose ( ) ;
161- this . toggleMenuActionViewItem = undefined ;
162- }
163-
164- super . dispose ( ) ;
165- }
166152}
167153
168154class ToggleMenuAction extends Action {
0 commit comments