diff --git a/src/vs/workbench/contrib/webview/browser/pre/host.js b/src/vs/workbench/contrib/webview/browser/pre/host.js index c63f6122aeeb6d3db57216cb27b01581a8f3b3a3..16bc8e156df3deec8ca3d309c583bd2e00dcf5f5 100644 --- a/src/vs/workbench/contrib/webview/browser/pre/host.js +++ b/src/vs/workbench/contrib/webview/browser/pre/host.js @@ -111,6 +111,7 @@ onMessage: hostMessaging.onMessage.bind(hostMessaging), ready: workerReady, fakeLoad: !onElectron, + onElectron: onElectron, rewriteCSP: onElectron ? (csp) => { return csp.replace(/vscode-resource:(?=(\s|;|$))/g, 'vscode-webview-resource:'); diff --git a/src/vs/workbench/contrib/webview/browser/pre/main.js b/src/vs/workbench/contrib/webview/browser/pre/main.js index b2f2ed0ff9d057e973eab32a13f8291442fac977..0aede20701c5ea80673c6036856d35727f45cb6e 100644 --- a/src/vs/workbench/contrib/webview/browser/pre/main.js +++ b/src/vs/workbench/contrib/webview/browser/pre/main.js @@ -13,6 +13,7 @@ * onIframeLoaded?: (iframe: HTMLIFrameElement) => void, * fakeLoad?: boolean, * rewriteCSP: (existingCSP: string, endpoint?: string) => string, + * onElectron?: boolean * }} WebviewHost */ @@ -286,8 +287,14 @@ // make sure we block the browser from dispatching it. Instead VS Code // handles these events and will dispatch a copy/paste back to the webview // if needed - if (isCopyPasteOrCut(e) || isUndoRedo(e)) { + if (isUndoRedo(e)) { e.preventDefault(); + } else if (isCopyPasteOrCut(e)) { + if (host.onElectron) { + e.preventDefault(); + } else { + return; // let the browser handle this + } } host.postMessage('did-keydown', {