diff --git a/src/vs/workbench/browser/parts/titlebar/menubarControl.ts b/src/vs/workbench/browser/parts/titlebar/menubarControl.ts index b7ca7da0ba45da51be966965f9056ad45487352d..3d3ee9cd1b89e9f89da39043c5243f56d67b49ab 100644 --- a/src/vs/workbench/browser/parts/titlebar/menubarControl.ts +++ b/src/vs/workbench/browser/parts/titlebar/menubarControl.ts @@ -745,6 +745,7 @@ export class MenubarControl extends Disposable { const submenuActions: SubmenuAction[] = []; updateActions(submenu, submenuActions); target.push(new SubmenuAction(action.label, submenuActions)); + submenu.dispose(); } else { action.label = this.calculateActionLabel(action); target.push(action); @@ -998,7 +999,8 @@ export class MenubarControl extends Disposable { if (menuItem instanceof SubmenuItemAction) { const submenu = { items: [] }; - this.populateMenuItems(this.menuService.createMenu(menuItem.item.submenu, this.contextKeyService), submenu, keybindings); + const menuToDispose = this.menuService.createMenu(menuItem.item.submenu, this.contextKeyService); + this.populateMenuItems(menuToDispose, submenu, keybindings); let menubarSubmenuItem: IMenubarMenuItemSubmenu = { id: menuItem.id, @@ -1007,6 +1009,7 @@ export class MenubarControl extends Disposable { }; menuToPopulate.items.push(menubarSubmenuItem); + menuToDispose.dispose(); } else { let menubarMenuItem: IMenubarMenuItemAction = { id: menuItem.id,