diff --git a/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts b/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts index 1dd864c51c945dd3d3d3d1eba13d4a653e0c324b..5a287448892c719e738cb1e91b86f8ea083f3056 100644 --- a/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts +++ b/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts @@ -140,6 +140,9 @@ class SvgBlocker extends Disposable { } class WebviewKeyboardHandler extends Disposable { + + private _ignoreMenuShortcut = false; + constructor( private readonly _webview: Electron.WebviewTag ) { @@ -150,8 +153,9 @@ class WebviewKeyboardHandler extends Disposable { const contents = this.getWebContents(); if (contents) { contents.on('before-input-event', (_event, input) => { - if (input.type === 'keyDown') { - this.setIgnoreMenuShortcuts(input.control || input.meta); + if (input.type === 'keyDown' && document.activeElement === this._webview) { + this._ignoreMenuShortcut = input.control || input.meta; + this.setIgnoreMenuShortcuts(this._ignoreMenuShortcut); } }); } @@ -167,6 +171,10 @@ class WebviewKeyboardHandler extends Disposable { this.handleKeydown(event.args[0]); return; + case 'did-focus': + this.setIgnoreMenuShortcuts(this._ignoreMenuShortcut); + break; + case 'did-blur': this.setIgnoreMenuShortcuts(false); return;