Change:
Issue Type: <bBug</bRelease Notes alt to open the file menu menu dosn't opens. menu opens, focus moves VS Code version: Code - Insiders 1.48.0-insider (, 2020-08-07T11:32:09.993Z) OS version: WindowsNT x64 10.0. <details<summarySystem Info</summary </details<details<summaryExtensions (22)</summaryExtensionVersion ------ github-markdown-preview0.0.2 markdown-checkbox0.1.3 markdown-emoji0.0.9 markdown-preview-github-styles0.1.6 markdown-yaml-preamble0.0.4 vscode-astyle0.9.0 vscode-markdownlint0.36.2 githistory0.6.9 EditorConfig0.15.1 vscode-pull-request-github0.18.1 vscode-language-pack-ru1.48.2 python2020.7. remote-ssh0.51.0 remote-ssh-edit0.51.0 remote-wsl0.44.4 cmake-tools1.4.1 cpptools0.29.0 vsliveshare1.0.2478 vsliveshare-audio0.1.85 vsliveshare-pack0.4.0 code-spell-checker1.9.0 code-spell-checker-russian0.2.4 </details<!-- generated by issue reporter --
I can reproduce this - just open any markdown preview and will not open the file menu. I think we should fix this for this release, as it is a breaking change (in last stable I can nicely press to open the file menu). Due to that I am assigning this to July and can move it out if he would prefer to fix it next milestone Also fyi for custom menus
Has the way the menus handle mnemonics changed this iteration? The webview still seem to be dispatching the events but they aren't being handled by anyone
nope no changes that i know of
should be handled here
is working for me and in insiders on windows. For just pressing to show the mnemonics, this does not seem like a regression from 1.47 in my testing but it was working in 1.46
I was just testing this out, I see no new behavioral differences between now and 1.46 does not focus the custom menubar with release notes focused. We do not get the alt event +<mnemonicdoes open the resepective menu with release notes focused.
hay can we fix that? because it's really strange in my opinion.
Changing the listeners from using to fixes the initial trigger, but keys like don't clear the focus. Moving out to look into a better fix
is there something webviews need to do to have keys passed back to VS Code? This came up at and I can repro in both stable and insiders. The webview hosts an iframe if that matters. I'm unable to interact with VS Code (eg. to open command palette) when focus is in the web view. I tried loading a non-Flutter page in there to check it wasn't specific to Flutter, but it's happening with other pages too.
If you can avoid it, don't use an iframe. If you absolutely must use an iframe, then you need to dispatch the keypresses back to webviews. See
I don't think there's any way to avoid the iframe really. The linked solution didn't work due to CORS issues, but the comments further down using postMessage to bounce the events over does. I'll see whether we can get something like that in the embedded app. Thanks!

Discussion:
metaKey: false }; <del> this._subscriptions.add(domEvent(document.body, 'keydown', true)(e => { </del> <ins> this._subscriptions.add(domEvent(window, 'keydown', true)(e => { </ins> const event = new StandardKeyboardEvent(e); // If Alt-key keydown event is repeated, ignore it #112347

} })); <del> this._subscriptions.add(domEvent(document.body, 'keyup', true)(e => { </del> <ins> this._subscriptions.add(domEvent(window, 'keyup', true)(e => { </ins> if (!e.altKey && this._keyStatus.altKey) { this._keyStatus.lastKeyReleased = 'alt'; } else if (!e.ctrlKey && this._keyStatus.ctrlKey) {

// Electron: workaround for https://github.com/electron/electron/issues/14258 // We have to detect keyboard events in the <webview> and dispatch them to our // keybinding service because these events do not bubble to the parent window anymore. <del> this.handleKeyDown(data); </del> <ins> this.handleKeyEvent('keydown', data); })); this._register(this.on('did-keyup', (data: KeyboardEvent) => { this.handleKeyEvent('keyup', data); </ins> })); this.style();

} } <del> private handleKeyDown(event: IKeydownEvent) { </del> <ins> private handleKeyEvent(type: 'keydown' | 'keyup', event: IKeydownEvent) { </ins> // Create a fake KeyboardEvent from the data provided <del> const emulatedKeyboardEvent = new KeyboardEvent('keydown', event); </del> <ins> const emulatedKeyboardEvent = new KeyboardEvent(type, event); </ins> // Force override the target Object.defineProperty(emulatedKeyboardEvent, 'target', { get: () => this.element,

repeat: e.repeat }); }; <ins> /** * @param {KeyboardEvent} e */ const handleInnerUp = (e) => { host.postMessage('did-keyup', { key: e.key, keyCode: e.keyCode, code: e.code, shiftKey: e.shiftKey, altKey: e.altKey, ctrlKey: e.ctrlKey, metaKey: e.metaKey, repeat: e.repeat }); }; </ins> /** * @param {KeyboardEvent} e

newFrame.contentWindow.addEventListener('click', handleInnerClick); newFrame.contentWindow.addEventListener('auxclick', handleAuxClick); newFrame.contentWindow.addEventListener('keydown', handleInnerKeydown); <ins> newFrame.contentWindow.addEventListener('keyup', handleInnerUp); </ins> newFrame.contentWindow.addEventListener('contextmenu', e => e.preventDefault()); if (host.onIframeLoaded) {