From 102a17f833be973407bfe88cf32608ddcf16fe5f Mon Sep 17 00:00:00 2001 From: GameParrot <85067619+GameParrot@users.noreply.github.com> Date: Sat, 22 Apr 2023 07:05:38 -0400 Subject: [PATCH 1/2] Fix pressing f11 during init It is now possible to exit fullscreen if f11 is pressed during init --- src/core_patches.cpp | 2 +- src/window_callbacks.cpp | 9 ++++++--- src/window_callbacks.h | 3 ++- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/core_patches.cpp b/src/core_patches.cpp index 8eb66f98..e98f83b0 100644 --- a/src/core_patches.cpp +++ b/src/core_patches.cpp @@ -32,7 +32,7 @@ void CorePatches::hideMousePointer() { } void CorePatches::setFullscreen(void* t, bool fullscreen) { - currentGameWindowCallbacks->setFullscreen(fullscreen); + currentGameWindowCallbacks->setFullscreen(fullscreen, true); } void CorePatches::setGameWindow(std::shared_ptr gameWindow) { diff --git a/src/window_callbacks.cpp b/src/window_callbacks.cpp index 9fffe903..68c220c6 100644 --- a/src/window_callbacks.cpp +++ b/src/window_callbacks.cpp @@ -51,11 +51,14 @@ void WindowCallbacks::onClose() { jniSupport.onWindowClosed(); } -void WindowCallbacks::setFullscreen(bool isFs) { - if(fullscreen != isFs) { +void WindowCallbacks::setFullscreen(bool isFs, bool calledFromSymbol) { + if(fullscreen != isFs && !(calledFromSymbol && useLegacyFullscreen)) { window.setFullscreen(isFs); fullscreen = isFs; } + if (calledFromSymbol) { + useLegacyFullscreen = false; + } } bool WindowCallbacks::hasInputMode(WindowCallbacks::InputMode want, bool changeMode) { @@ -156,7 +159,7 @@ void WindowCallbacks::onKeyboard(KeyCode key, KeyAction action) { jniSupport.getTextInputHandler().onKeyPressed(key, action); } - if(key == KeyCode::FN11 && action == KeyAction::PRESS) + if(key == KeyCode::FN11 && action == KeyAction::PRESS && useLegacyFullscreen) setFullscreen(!fullscreen); if(useDirectKeyboardInput && (action == KeyAction::PRESS || action == KeyAction::RELEASE)) { diff --git a/src/window_callbacks.h b/src/window_callbacks.h index 5f2f7533..ce730c5d 100644 --- a/src/window_callbacks.h +++ b/src/window_callbacks.h @@ -24,6 +24,7 @@ class WindowCallbacks { bool modCTRL = false; bool needsQueueGamepadInput = true; bool fullscreen = options.fullscreen; + bool useLegacyFullscreen = true; bool sendEvents = false; enum class InputMode { Touch, @@ -52,7 +53,7 @@ class WindowCallbacks { void onClose(); - void setFullscreen(bool isFs); + void setFullscreen(bool isFs, bool calledFromSymbol = false); void onMouseButton(double x, double y, int btn, MouseButtonAction action); void onMousePosition(double x, double y); From 59b605bc751c6b075a7002b89385d82238453e30 Mon Sep 17 00:00:00 2001 From: GameParrot <85067619+GameParrot@users.noreply.github.com> Date: Sat, 22 Apr 2023 07:14:29 -0400 Subject: [PATCH 2/2] Small fix --- src/window_callbacks.cpp | 6 ++++-- src/window_callbacks.h | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/window_callbacks.cpp b/src/window_callbacks.cpp index 68c220c6..807c8d50 100644 --- a/src/window_callbacks.cpp +++ b/src/window_callbacks.cpp @@ -52,7 +52,7 @@ void WindowCallbacks::onClose() { } void WindowCallbacks::setFullscreen(bool isFs, bool calledFromSymbol) { - if(fullscreen != isFs && !(calledFromSymbol && useLegacyFullscreen)) { + if(fullscreen != isFs && !(calledFromSymbol && useLegacyFullscreen && hasUsedLegacyFullscreen)) { window.setFullscreen(isFs); fullscreen = isFs; } @@ -159,8 +159,10 @@ void WindowCallbacks::onKeyboard(KeyCode key, KeyAction action) { jniSupport.getTextInputHandler().onKeyPressed(key, action); } - if(key == KeyCode::FN11 && action == KeyAction::PRESS && useLegacyFullscreen) + if(key == KeyCode::FN11 && action == KeyAction::PRESS && useLegacyFullscreen) { + hasUsedLegacyFullscreen = true; setFullscreen(!fullscreen); + } if(useDirectKeyboardInput && (action == KeyAction::PRESS || action == KeyAction::RELEASE)) { if (Keyboard::useLegacyKeyboard) { diff --git a/src/window_callbacks.h b/src/window_callbacks.h index ce730c5d..882d3443 100644 --- a/src/window_callbacks.h +++ b/src/window_callbacks.h @@ -25,6 +25,7 @@ class WindowCallbacks { bool needsQueueGamepadInput = true; bool fullscreen = options.fullscreen; bool useLegacyFullscreen = true; + bool hasUsedLegacyFullscreen = false; bool sendEvents = false; enum class InputMode { Touch,