vscode: WebViewPanel created with preserveFocus: true suffers from a focus problem.
- VSCode Version: Version: 1.37.0-insider Commit: d50852db1af10ec100a71ad57cc3a04c8aead117 Date: 2019-07-08T05:33:31.335Z Electron: 4.2.5 Chrome: 69.0.3497.128 Node.js: 10.11.0 V8: 6.9.427.31-electron.0 OS: Darwin x64 17.7.0
- OS Version: macOS High Sierra 10.13.6 (17G7024)
Steps to Reproduce:
- Execute the following sample code of extension.
- Execute the
Hello World
command. - Click the tab of WebView and press the
f
key of the keyboard. - In the conlose, only the
window focused!
message shown. - Click the tab of WebView, again. Then, press
f
. - The message
keyboard F typed!
shown.
import * as vscode from 'vscode';
export function activate(context: vscode.ExtensionContext) {
const rootUrl = vscode.Uri.file(context.extensionPath)
const disposable = vscode.commands.registerCommand('extension.helloWorld', async (args, brgs, crgs) => {
if (!vscode.window.activeTextEditor) {
return;
}
const panel = vscode.window.createWebviewPanel(
'catCoding',
'Cat Coding',
{ preserveFocus: true, viewColumn: vscode.ViewColumn.Beside },
{ enableScripts: true }
);
panel.webview.html = getHtml();
});
context.subscriptions.push(disposable);
}
function getHtml() {
return `
<!DOCTYPE html><html><head></head>
<body>
<script>
window.onfocus = function() {
console.log('window focused!');
}
window.addEventListener('keydown', function(evt) {
if(evt.keyCode == 70 && evt.target.nodeName != 'INPUT') {
console.log('keyboard F typed!')
}
})
</script>
`
}
// this method is called when your extension is deactivated
export function deactivate() {}
Does this issue occur when all extensions are disabled?: Yes
About this issue
- Original URL
- State: closed
- Created 5 years ago
- Reactions: 9
- Comments: 37 (17 by maintainers)
The fix for Chromium has been merged to master: https://github.com/chromium/chromium/commit/c4f0a725ff5bc078ccdf43e60b2b455ce4efafa8 🎉. It will be released in Chromium M80.
@deepak1556 @mjbvz @bpasero Is it possible for you to apply this patch to the Electron sources when you build for the next release? 🙏
I’ve made some progress on this issue, though it’s unclear still exactly why this is occurring only in VSCode vs in Chrome. I sent an email to two Chromium maintainers who work on the relevant bits hoping to get their take. For those curious, here’s what I sent them:
Is there any update on this issue? It’s currently affecting any extension that uses a webview.
Hi @deepak1556, any way I can help debug this issue? 🙏
I’ve narrowed it down to changes introduced between the June 2nd and June 5th VS Code Insiders builds. A couple unfortunate details have made this hard to track down further:
It’s likely the root cause is either in the proprietary additions or in some build process or environment change between those two dates, but I can’t access either to try to fix the issue
6/2 Insiders build (good) commit: a848f18df4efa9eb947bd01cbebcede418e66148 6/5 Insiders build (bad) commit: fc294b683d88fe607d9456bc1bf774ad1d4a7ce6
@mjbvz do you have any updates here? We over million installs of our PlatformIO IDE extension and this issue blocks https://github.com/platformio/platformio-vscode-ide/issues/892
I already checked earlier today. Works beautifully! 🙏
@txase the fix is now available in latest insiders
@mjbvz If it helps, here’s a reproducible set of steps to see the issue using our extension:
template.yaml
with the following inside:It’s possible to fix the focus state by double clicking on the canvas editor tab.
Here’s a video showing the above:
@mjbvz Here’s the steps I took:
I also tried running
yarn run gulp vscode-darwin
andyarn run gulp vscode-darwin-min
to see if the app packages they produced exhibit the bug. Unfortunately, they don’t.I also tried the electron 6 exploration build you linked. It also has the bug.
One thing that would be interesting to try: Are you able to re-build the 6/2 commit of the insiders edition? If it had the bug after being rebuilt, then it would point to a change in the build pipeline having caused the issue. If it doesn’t have the bug, then it is a problem in the source code somewhere (OSS or proprietary).
@txase Thanks for the investigation.
We upgraded from electron 3 to electron 4 between those two commits which seems suspect. When building from master, did you do a full build (including yarn install) at those checkpoints?
Also, if this is electron related, can you try our our electron 6 exploration builds to see if that fixes the problem.
So I’m getting this bug with LaTeX-Workshop: James-Yu/LaTeX-Workshop#1481. When switching to view the pdf on a Mac via command+2, all shortcuts within VSCode seem to no longer work. What makes this even nastier is that it sometimes only happens after switching TWICE (i.e. I can go from pdf to tex to pdf via command+1 and command+2 but it eventually gets stuck focused on the pdf). I believe this focus issue is the underlying problem with the bug, as referenced earlier. Strangely, I don’t experience this on Ubuntu at all.