Skip to content

Commit 6bb0ffb

Browse files
committed
Use Mutable disposable
1 parent e52805a commit 6bb0ffb

1 file changed

Lines changed: 8 additions & 22 deletions

File tree

src/vs/base/browser/ui/toolbar/toolbar.ts

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { Action, IActionRunner, IAction } from 'vs/base/common/actions';
99
import { ActionBar, ActionsOrientation, IActionViewItemProvider } from 'vs/base/browser/ui/actionbar/actionbar';
1010
import { IContextMenuProvider, DropdownMenuActionViewItem } from 'vs/base/browser/ui/dropdown/dropdown';
1111
import { ResolvedKeybinding } from 'vs/base/common/keyCodes';
12-
import { Disposable } from 'vs/base/common/lifecycle';
12+
import { Disposable, MutableDisposable } from 'vs/base/common/lifecycle';
1313
import { AnchorAlignment } from 'vs/base/browser/ui/contextview/contextview';
1414
import { 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

168154
class ToggleMenuAction extends Action {

0 commit comments

Comments
 (0)