From ce773657883b19b5659711e125b6c95413f83556 Mon Sep 17 00:00:00 2001 From: ubkp <118854183+ubkp@users.noreply.github.com> Date: Sun, 10 Dec 2023 16:42:06 -0300 Subject: [PATCH] Add ToggleBorderlessWindowed() for PLATFORM_WEB --- src/platforms/rcore_web.c | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/platforms/rcore_web.c b/src/platforms/rcore_web.c index ae210853b..3af78127e 100644 --- a/src/platforms/rcore_web.c +++ b/src/platforms/rcore_web.c @@ -211,7 +211,33 @@ void ToggleFullscreen(void) // Toggle borderless windowed mode void ToggleBorderlessWindowed(void) { - TRACELOG(LOG_WARNING, "ToggleBorderlessWindowed() not available on target platform"); + const bool wasFullscreen = EM_ASM_INT( { if ( document.fullscreenElement ) return 1; }, 0); + if (wasFullscreen) + { + EM_ASM( document.exitFullscreen(); ); + + CORE.Window.fullscreen = false; + CORE.Window.flags &= ~FLAG_FULLSCREEN_MODE; + } + + if (!IsWindowState(FLAG_BORDERLESS_WINDOWED_MODE)) + { + // NOTE: 1. The setTimeouts handle the browser mode change delay + // 2. The style unset handles the possibility of a width="100%" like on the default shell.html file + EM_ASM( + setTimeout(function() + { + Module.requestFullscreen(true, true); + setTimeout(function() + { + canvas.style.width="unset"; + }, 100); + }, 100); + ); + + CORE.Window.flags |= FLAG_BORDERLESS_WINDOWED_MODE; + } + else CORE.Window.flags &= ~FLAG_BORDERLESS_WINDOWED_MODE; } // Set window state: maximized, if resizable