From 41b3cbc1dc6b9e69a740c044bcd890294383369c Mon Sep 17 00:00:00 2001 From: Peng Lyu Date: Mon, 24 Jun 2019 10:41:31 -0700 Subject: [PATCH] webkit fullscreen detection --- src/vs/base/browser/dom.ts | 1 + src/vs/workbench/browser/web.simpleservices.ts | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/vs/base/browser/dom.ts b/src/vs/base/browser/dom.ts index 3fb6d8b35fc..e201902ae24 100644 --- a/src/vs/base/browser/dom.ts +++ b/src/vs/base/browser/dom.ts @@ -858,6 +858,7 @@ export const EventType = { RESIZE: 'resize', SCROLL: 'scroll', FULLSCREEN_CHANGE: 'fullscreenchange', + WK_FULLSCREEN_CHANGE: 'webkitfullscreenchange', // Form SELECT: 'select', CHANGE: 'change', diff --git a/src/vs/workbench/browser/web.simpleservices.ts b/src/vs/workbench/browser/web.simpleservices.ts index f5bccc1b42d..193cb07fd31 100644 --- a/src/vs/workbench/browser/web.simpleservices.ts +++ b/src/vs/workbench/browser/web.simpleservices.ts @@ -760,6 +760,14 @@ export class SimpleWindowService extends Disposable implements IWindowService { browser.setFullscreen(false); } })); + + this._register(addDisposableListener(document, EventType.WK_FULLSCREEN_CHANGE, () => { + if (document.fullscreenElement || (document).webkitFullscreenElement || (document).webkitIsFullScreen) { + browser.setFullscreen(true); + } else { + browser.setFullscreen(false); + } + })); } isFocused(): Promise { @@ -832,10 +840,8 @@ export class SimpleWindowService extends Disposable implements IWindowService { try { if (!(document).webkitIsFullScreen) { (target).webkitRequestFullscreen(); // it's async, but doesn't return a real promise. - browser.setFullscreen(true); // we have to set this proactively because Safari doesn't emit fullscreenchange event. } else { (document).webkitExitFullscreen(); // it's async, but doesn't return a real promise. - browser.setFullscreen(false); } } catch { console.warn('Enter/Exit Full Screen failed');