mirror of
https://github.com/microsoft/vscode.git
synced 2026-08-22 04:02:15 +01:00
fix: memory leak in menubar (#198052)
* fix: memory leak in menubar * Update src/vs/base/browser/ui/menu/menubar.ts Co-authored-by: Benjamin Pasero <benjamin.pasero@gmail.com> * Update src/vs/base/browser/ui/menu/menubar.ts Co-authored-by: Benjamin Pasero <benjamin.pasero@gmail.com> * Update src/vs/base/browser/ui/menu/menubar.ts Co-authored-by: Benjamin Pasero <benjamin.pasero@gmail.com> * fix: potential memory leak when focusing another menu --------- Co-authored-by: Benjamin Pasero <benjamin.pasero@gmail.com> Co-authored-by: SteVen Batten <sbatten@microsoft.com>
This commit is contained in:
co-authored by
Benjamin Pasero
SteVen Batten
parent
c60da32708
commit
8a45b1be23
@@ -17,7 +17,7 @@ import { ThemeIcon } from 'vs/base/common/themables';
|
||||
import { Emitter, Event } from 'vs/base/common/event';
|
||||
import { KeyCode, KeyMod, ScanCode, ScanCodeUtils } from 'vs/base/common/keyCodes';
|
||||
import { ResolvedKeybinding } from 'vs/base/common/keybindings';
|
||||
import { Disposable, dispose, IDisposable } from 'vs/base/common/lifecycle';
|
||||
import { Disposable, DisposableStore, dispose, IDisposable } from 'vs/base/common/lifecycle';
|
||||
import { isMacintosh } from 'vs/base/common/platform';
|
||||
import * as strings from 'vs/base/common/strings';
|
||||
import 'vs/css!./menubar';
|
||||
@@ -87,6 +87,8 @@ export class MenuBar extends Disposable {
|
||||
private numMenusShown: number = 0;
|
||||
private overflowLayoutScheduled: IDisposable | undefined = undefined;
|
||||
|
||||
private readonly menuDisposables = this._register(new DisposableStore());
|
||||
|
||||
constructor(private container: HTMLElement, private options: IMenuBarOptions, private menuStyle: IMenuStyles) {
|
||||
super();
|
||||
|
||||
@@ -751,6 +753,7 @@ export class MenuBar extends Disposable {
|
||||
}
|
||||
|
||||
if (this.focusedMenu) {
|
||||
this.cleanupCustomMenu();
|
||||
this.showCustomMenu(this.focusedMenu.index, this.openedViaKeyboard);
|
||||
}
|
||||
break;
|
||||
@@ -985,6 +988,7 @@ export class MenuBar extends Disposable {
|
||||
|
||||
this.focusedMenu = { index: this.focusedMenu.index };
|
||||
}
|
||||
this.menuDisposables.clear();
|
||||
}
|
||||
|
||||
private showCustomMenu(menuIndex: number, selectFirst = true): void {
|
||||
@@ -1025,9 +1029,8 @@ export class MenuBar extends Disposable {
|
||||
useEventAsContext: true
|
||||
};
|
||||
|
||||
const menuWidget = this._register(new Menu(menuHolder, customMenu.actions, menuOptions, this.menuStyle));
|
||||
|
||||
this._register(menuWidget.onDidCancel(() => {
|
||||
const menuWidget = this.menuDisposables.add(new Menu(menuHolder, customMenu.actions, menuOptions, this.menuStyle));
|
||||
this.menuDisposables.add(menuWidget.onDidCancel(() => {
|
||||
this.focusState = MenubarState.FOCUSED;
|
||||
}));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user