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..807c8d50 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 && hasUsedLegacyFullscreen)) { window.setFullscreen(isFs); fullscreen = isFs; } + if (calledFromSymbol) { + useLegacyFullscreen = false; + } } bool WindowCallbacks::hasInputMode(WindowCallbacks::InputMode want, bool changeMode) { @@ -156,8 +159,10 @@ 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) { + 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 5f2f7533..882d3443 100644 --- a/src/window_callbacks.h +++ b/src/window_callbacks.h @@ -24,6 +24,8 @@ class WindowCallbacks { bool modCTRL = false; bool needsQueueGamepadInput = true; bool fullscreen = options.fullscreen; + bool useLegacyFullscreen = true; + bool hasUsedLegacyFullscreen = false; bool sendEvents = false; enum class InputMode { Touch, @@ -52,7 +54,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);