From 70ebdaa685b21272d33a96562f8601ed9487b476 Mon Sep 17 00:00:00 2001 From: Hyper <34012267+hyperbx@users.noreply.github.com> Date: Fri, 7 Feb 2025 20:28:57 +0000 Subject: [PATCH] game_window: don't allow resizing until after boot, fix monitor switching --- UnleashedRecomp/app.cpp | 1 + UnleashedRecomp/ui/game_window.cpp | 10 +++++++++- UnleashedRecomp/ui/game_window.h | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/UnleashedRecomp/app.cpp b/UnleashedRecomp/app.cpp index 5b6c163..25d4521 100644 --- a/UnleashedRecomp/app.cpp +++ b/UnleashedRecomp/app.cpp @@ -38,6 +38,7 @@ PPC_FUNC(sub_824EB490) SWA::SGlobals::Init(); Registry::Save(); + GameWindow::SetResizable(true); __imp__sub_824EB490(ctx, base); } diff --git a/UnleashedRecomp/ui/game_window.cpp b/UnleashedRecomp/ui/game_window.cpp index 1297c3b..126a36b 100644 --- a/UnleashedRecomp/ui/game_window.cpp +++ b/UnleashedRecomp/ui/game_window.cpp @@ -382,6 +382,11 @@ void GameWindow::SetFullscreenCursorVisibility(bool isVisible) } } +void GameWindow::SetResizable(bool isResizable) +{ + SDL_SetWindowResizable(s_pWindow, (SDL_bool)isResizable); +} + bool GameWindow::IsMaximised() { return SDL_GetWindowFlags(s_pWindow) & SDL_WINDOW_MAXIMIZED; @@ -442,7 +447,7 @@ void GameWindow::ResetDimensions() uint32_t GameWindow::GetWindowFlags() { - uint32_t flags = SDL_WINDOW_HIDDEN | SDL_WINDOW_RESIZABLE | SDL_WINDOW_ALLOW_HIGHDPI; + uint32_t flags = SDL_WINDOW_HIDDEN | SDL_WINDOW_ALLOW_HIGHDPI; if (Config::WindowState == EWindowState::Maximised) flags |= SDL_WINDOW_MAXIMIZED; @@ -480,6 +485,9 @@ void GameWindow::SetDisplay(int displayIndex) if (!IsFullscreen()) return; + if (GetDisplay() == displayIndex) + return; + s_isChangingDisplay = true; SDL_Rect bounds; diff --git a/UnleashedRecomp/ui/game_window.h b/UnleashedRecomp/ui/game_window.h index 5f51b2f..19bfc90 100644 --- a/UnleashedRecomp/ui/game_window.h +++ b/UnleashedRecomp/ui/game_window.h @@ -34,6 +34,7 @@ public: static bool IsFullscreen(); static bool SetFullscreen(bool isEnabled); static void SetFullscreenCursorVisibility(bool isVisible); + static void SetResizable(bool isResizable); static bool IsMaximised(); static EWindowState SetMaximised(bool isEnabled); static SDL_Rect GetDimensions();