diff --git a/UnleashedRecomp/ui/game_window.cpp b/UnleashedRecomp/ui/game_window.cpp index 3ed5fbb1..cc25ab61 100644 --- a/UnleashedRecomp/ui/game_window.cpp +++ b/UnleashedRecomp/ui/game_window.cpp @@ -378,6 +378,11 @@ SDL_Rect GameWindow::GetDimensions() return rect; } +void GameWindow::GetSizeInPixels(int *w, int *h) +{ + SDL_GetWindowSizeInPixels(s_pWindow, w, h); +} + void GameWindow::SetDimensions(int w, int h, int x, int y) { s_width = w; diff --git a/UnleashedRecomp/ui/game_window.h b/UnleashedRecomp/ui/game_window.h index 5f51b2fd..bd0cb9a8 100644 --- a/UnleashedRecomp/ui/game_window.h +++ b/UnleashedRecomp/ui/game_window.h @@ -37,6 +37,7 @@ public: static bool IsMaximised(); static EWindowState SetMaximised(bool isEnabled); static SDL_Rect GetDimensions(); + static void GetSizeInPixels(int *w, int *h); static void SetDimensions(int w, int h, int x = SDL_WINDOWPOS_CENTERED, int y = SDL_WINDOWPOS_CENTERED); static void ResetDimensions(); static uint32_t GetWindowFlags(); diff --git a/UnleashedRecomp/ui/options_menu.cpp b/UnleashedRecomp/ui/options_menu.cpp index b348d82a..a16252d1 100644 --- a/UnleashedRecomp/ui/options_menu.cpp +++ b/UnleashedRecomp/ui/options_menu.cpp @@ -1121,17 +1121,25 @@ static void DrawConfigOption(int32_t rowIndex, float yOffset, ConfigDef* conf { if (config == &Config::WindowSize) { - auto displayModes = GameWindow::GetDisplayModes(); - - if (config->Value >= 0 && config->Value < displayModes.size()) + if (Config::Fullscreen) { - auto& displayMode = displayModes[config->Value]; - - valueText = fmt::format("{}x{}", displayMode.w, displayMode.h); + int displayW, displayH; + GameWindow::GetSizeInPixels(&displayW, &displayH); + valueText = fmt::format("{}x{}", displayW, displayH); } else { - valueText = fmt::format("{}x{}", GameWindow::s_width, GameWindow::s_height); + auto displayModes = GameWindow::GetDisplayModes(); + if (config->Value >= 0 && config->Value < displayModes.size()) + { + auto& displayMode = displayModes[config->Value]; + + valueText = fmt::format("{}x{}", displayMode.w, displayMode.h); + } + else + { + valueText = fmt::format("{}x{}", GameWindow::s_width, GameWindow::s_height); + } } } else if (config == &Config::Monitor)