From 2815e732f7666108246e3d392f272a6752584a30 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 9 Nov 2020 19:22:14 -0800 Subject: [PATCH] Fix refocusing clearing existing forcus for iframe based webviews #83188 --- .../contrib/webview/browser/pre/main.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/contrib/webview/browser/pre/main.js b/src/vs/workbench/contrib/webview/browser/pre/main.js index 0f0773fce5a..c088c40d384 100644 --- a/src/vs/workbench/contrib/webview/browser/pre/main.js +++ b/src/vs/workbench/contrib/webview/browser/pre/main.js @@ -439,10 +439,18 @@ // propagate focus host.onMessage('focus', () => { - const target = getActiveFrame(); - if (target) { - target.contentWindow.focus(); + const activeFrame = getActiveFrame(); + if (!activeFrame || !activeFrame.contentWindow) { + return; + } + + if (document.activeElement === activeFrame) { + // We are already focused on the iframe (or one of its children) so no need + // to refocus. + return; } + + activeFrame.contentWindow.focus(); }); // update iframe-contents @@ -573,6 +581,8 @@ newFrame.contentWindow.focus(); } + + contentWindow.addEventListener('scroll', handleInnerScroll); contentWindow.addEventListener('wheel', handleWheel); -- GitLab