From 0873a8b03600cafa54d1d6652e14a2f46719cb59 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Thu, 14 May 2020 09:45:08 +0200 Subject: [PATCH] web - switch to addEventListener for beforeunload --- .../services/lifecycle/browser/lifecycleService.ts | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/vs/workbench/services/lifecycle/browser/lifecycleService.ts b/src/vs/workbench/services/lifecycle/browser/lifecycleService.ts index 0df88daa425..0af8ebd5dd8 100644 --- a/src/vs/workbench/services/lifecycle/browser/lifecycleService.ts +++ b/src/vs/workbench/services/lifecycle/browser/lifecycleService.ts @@ -22,12 +22,10 @@ export class BrowserLifecycleService extends AbstractLifecycleService { } private registerListeners(): void { - // Note: we cannot change this to window.addEventListener('beforeUnload') - // because it seems that mechanism does not allow for preventing the unload - window.onbeforeunload = () => this.onBeforeUnload(); + window.addEventListener('beforeunload', e => this.onBeforeUnload(e)); } - private onBeforeUnload(): string | null { + private onBeforeUnload(event: BeforeUnloadEvent): void { const logService = this.logService; logService.info('[lifecycle] onBeforeUnload triggered'); @@ -48,7 +46,10 @@ export class BrowserLifecycleService extends AbstractLifecycleService { // Veto: signal back to browser by returning a non-falsify return value if (veto) { - return localize('lifecycleVeto', "Changes that you made may not be saved. Please check press 'Cancel' and try again."); + event.preventDefault(); + event.returnValue = localize('lifecycleVeto', "Changes that you made may not be saved. Please check press 'Cancel' and try again."); + + return; } // No Veto: continue with Will Shutdown @@ -61,8 +62,6 @@ export class BrowserLifecycleService extends AbstractLifecycleService { // Finally end with Shutdown event this._onShutdown.fire(); - - return null; } }