From 38e68d16f9431d00524908c3d87a0982fa090b15 Mon Sep 17 00:00:00 2001 From: Dag Stuan Date: Thu, 19 Jun 2025 16:10:10 +0200 Subject: [PATCH] fix(web): exit slideshow when exiting fullscreen. (#19247) Exit slideshow when exiting fullscreen. Browsers do not send a keyboard event when exiting fullscreen, so if the user exits fullscreen with the escape key, the slideshow remains open, requiring another escape key press to close it. Fix this by listening for the fullscreenchange event and closing the slideshow when exiting fullscreen. --- .../asset-viewer/slideshow-bar.svelte | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/web/src/lib/components/asset-viewer/slideshow-bar.svelte b/web/src/lib/components/asset-viewer/slideshow-bar.svelte index 0f7d0a565f..a52bcbf707 100644 --- a/web/src/lib/components/asset-viewer/slideshow-bar.svelte +++ b/web/src/lib/components/asset-viewer/slideshow-bar.svelte @@ -108,6 +108,30 @@ } await modalManager.show(SlideshowSettingsModal); }; + + onMount(() => { + function exitFullscreenHandler() { + const doc = document as Document & { + webkitIsFullScreen?: boolean; + }; + + if ( + // eslint-disable-next-line tscompat/tscompat + !document.fullscreenElement && + !doc.webkitIsFullScreen + ) { + onClose(); + } + } + + document.addEventListener('fullscreenchange', exitFullscreenHandler); + document.addEventListener('webkitfullscreenchange', exitFullscreenHandler); + + return () => { + document.removeEventListener('fullscreenchange', exitFullscreenHandler); + document.removeEventListener('webkitfullscreenchange', exitFullscreenHandler); + }; + });