diff --git a/src/tsconfig.strictNullChecks.json b/src/tsconfig.strictNullChecks.json index 3f1d60453fea9383043532580906fff4a9a59f0c..3bf0bad6d329dde3540bc22e0169566fdad9d6ce 100644 --- a/src/tsconfig.strictNullChecks.json +++ b/src/tsconfig.strictNullChecks.json @@ -493,6 +493,8 @@ "./vs/platform/configuration/test/node/configurationService.test.ts", "./vs/platform/contextkey/browser/contextKeyService.ts", "./vs/platform/contextkey/common/contextkey.ts", + "./vs/platform/contextview/browser/contextMenuHandler.ts", + "./vs/platform/contextview/browser/contextMenuService.ts", "./vs/platform/contextview/browser/contextView.ts", "./vs/platform/contextview/browser/contextViewService.ts", "./vs/platform/credentials/test/node/keytar.test.ts", diff --git a/src/vs/base/browser/ui/menu/menu.ts b/src/vs/base/browser/ui/menu/menu.ts index b6b53bd522acb792b40f4c619e150f937fa9f021..55167391aa892f13f633dda8e1d89af54461f705 100644 --- a/src/vs/base/browser/ui/menu/menu.ts +++ b/src/vs/base/browser/ui/menu/menu.ts @@ -26,7 +26,7 @@ export interface IMenuOptions { context?: any; actionItemProvider?: IActionItemProvider; actionRunner?: IActionRunner; - getKeyBinding?: (action: IAction) => ResolvedKeybinding; + getKeyBinding?: (action: IAction) => ResolvedKeybinding | null; ariaLabel?: string; enableMnemonics?: boolean; anchorAlignment?: AnchorAlignment; diff --git a/src/vs/platform/contextview/browser/contextMenuHandler.ts b/src/vs/platform/contextview/browser/contextMenuHandler.ts index 989638f725436bca15285ea9761ce915fe2d362f..f84b32aabeff26d47989ff0040fe1d2dd12d58fc 100644 --- a/src/vs/platform/contextview/browser/contextMenuHandler.ts +++ b/src/vs/platform/contextview/browser/contextMenuHandler.ts @@ -21,9 +21,9 @@ import { attachMenuStyler } from 'vs/platform/theme/common/styler'; import { domEvent } from 'vs/base/browser/event'; export class ContextMenuHandler { - private element: HTMLElement; + private element: HTMLElement | null; private elementDisposable: IDisposable; - private menuContainerElement: HTMLElement; + private menuContainerElement: HTMLElement | null; private focusToReturn: HTMLElement; constructor( @@ -37,7 +37,7 @@ export class ContextMenuHandler { this.setContainer(element); } - setContainer(container: HTMLElement): void { + setContainer(container: HTMLElement | null): void { if (this.element) { this.elementDisposable = dispose(this.elementDisposable); this.element = null; @@ -96,12 +96,14 @@ export class ContextMenuHandler { }, focus: () => { - menu.focus(!!delegate.autoSelectFirstItem); + if (menu) { + menu.focus(!!delegate.autoSelectFirstItem); + } }, onHide: (didCancel?: boolean) => { if (delegate.onHide) { - delegate.onHide(didCancel); + delegate.onHide(!!didCancel); } this.menuContainerElement = null; @@ -140,7 +142,7 @@ export class ContextMenuHandler { } let event = new StandardMouseEvent(e); - let element = event.target; + let element: HTMLElement | null = event.target; while (element) { if (element === this.menuContainerElement) {