From 7e9cc6df5dca1beae2b7a3e1166cfc1b53d24d68 Mon Sep 17 00:00:00 2001 From: Aaron van Geffen Date: Sat, 26 Apr 2025 11:30:29 +0200 Subject: [PATCH] Merge pull request #24288 from AaronVanGeffen/close-buttons Generalise white close button strings to all translucent title bars --- src/openrct2-ui/interface/Widget.h | 7 ++----- src/openrct2-ui/scripting/CustomWindow.cpp | 7 ++++--- src/openrct2-ui/windows/DemolishRidePrompt.cpp | 2 +- src/openrct2-ui/windows/OverwritePrompt.cpp | 2 +- src/openrct2-ui/windows/RefurbishRidePrompt.cpp | 2 +- src/openrct2-ui/windows/SavePrompt.cpp | 4 ++-- src/openrct2-ui/windows/ShortcutKeys.cpp | 2 +- src/openrct2-ui/windows/StaffFirePrompt.cpp | 2 +- src/openrct2/interface/WindowBase.cpp | 12 +++++++----- 9 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/openrct2-ui/interface/Widget.h b/src/openrct2-ui/interface/Widget.h index 6ef59f8c18..cb6989e9b9 100644 --- a/src/openrct2-ui/interface/Widget.h +++ b/src/openrct2-ui/interface/Widget.h @@ -16,7 +16,7 @@ #include // clang-format off -#define WINDOW_SHIM_RAW(TITLE, WIDTH, HEIGHT, CLOSE_STR) \ +#define WINDOW_SHIM(TITLE, WIDTH, HEIGHT) \ { WindowWidgetType::Frame, 0, 0, WIDTH - 1, 0, HEIGHT - 1, 0xFFFFFFFF, kStringIdNone }, \ { WindowWidgetType::Caption, 0, 1, WIDTH - 2, 1, 14, TITLE, STR_WINDOW_TITLE_TIP }, \ { .type = WindowWidgetType::CloseBox, \ @@ -25,11 +25,8 @@ .right = WIDTH - 3, \ .top = 2, \ .bottom = 13, \ - .string = CLOSE_STR, \ + .string = kCloseBoxStringBlackNormal, \ .tooltip = STR_CLOSE_WINDOW_TIP } - -#define WINDOW_SHIM(TITLE, WIDTH, HEIGHT) WINDOW_SHIM_RAW(TITLE, WIDTH, HEIGHT, kCloseBoxStringBlackNormal) -#define WINDOW_SHIM_WHITE(TITLE, WIDTH, HEIGHT) WINDOW_SHIM_RAW(TITLE, WIDTH, HEIGHT, kCloseBoxStringWhiteNormal) // clang-format on namespace OpenRCT2::Ui diff --git a/src/openrct2-ui/scripting/CustomWindow.cpp b/src/openrct2-ui/scripting/CustomWindow.cpp index a2645f5218..b7df30bf7d 100644 --- a/src/openrct2-ui/scripting/CustomWindow.cpp +++ b/src/openrct2-ui/scripting/CustomWindow.cpp @@ -486,11 +486,12 @@ namespace OpenRCT2::Ui::Windows void OnPrepareDraw() override { - bool useWhite = colours[0].hasFlag(ColourFlag::translucent); + auto& closeButton = widgets[WIDX_CLOSE]; + bool translucent = colours[closeButton.colour].hasFlag(ColourFlag::translucent); if (Config::Get().interface.EnlargedUi) - widgets[WIDX_CLOSE].string = !useWhite ? kCloseBoxStringBlackLarge : kCloseBoxStringWhiteLarge; + closeButton.string = !translucent ? kCloseBoxStringBlackLarge : kCloseBoxStringWhiteLarge; else - widgets[WIDX_CLOSE].string = !useWhite ? kCloseBoxStringBlackNormal : kCloseBoxStringWhiteNormal; + closeButton.string = !translucent ? kCloseBoxStringBlackNormal : kCloseBoxStringWhiteNormal; // Having the content panel visible for transparent windows makes the borders darker than they should be // For now just hide it if there are no tabs and the window is not resizable diff --git a/src/openrct2-ui/windows/DemolishRidePrompt.cpp b/src/openrct2-ui/windows/DemolishRidePrompt.cpp index 2300910f3f..e764ab913e 100644 --- a/src/openrct2-ui/windows/DemolishRidePrompt.cpp +++ b/src/openrct2-ui/windows/DemolishRidePrompt.cpp @@ -35,7 +35,7 @@ namespace OpenRCT2::Ui::Windows // clang-format off static constexpr Widget window_ride_demolish_widgets[] = { - WINDOW_SHIM_WHITE(STR_DEMOLISH_RIDE, WW, WH), + WINDOW_SHIM(STR_DEMOLISH_RIDE, WW, WH), MakeWidget({ 10, WH - 22}, {85, 14}, WindowWidgetType::Button, WindowColour::Primary, STR_DEMOLISH ), MakeWidget({WW - 95, WH - 22}, {85, 14}, WindowWidgetType::Button, WindowColour::Primary, STR_SAVE_PROMPT_CANCEL), }; diff --git a/src/openrct2-ui/windows/OverwritePrompt.cpp b/src/openrct2-ui/windows/OverwritePrompt.cpp index fc1dff6b32..6bb56ca4e0 100644 --- a/src/openrct2-ui/windows/OverwritePrompt.cpp +++ b/src/openrct2-ui/windows/OverwritePrompt.cpp @@ -33,7 +33,7 @@ namespace OpenRCT2::Ui::Windows // clang-format off static constexpr Widget window_overwrite_prompt_widgets[] = { - WINDOW_SHIM_WHITE(STR_FILEBROWSER_OVERWRITE_TITLE, OVERWRITE_WW, OVERWRITE_WH), + WINDOW_SHIM(STR_FILEBROWSER_OVERWRITE_TITLE, OVERWRITE_WW, OVERWRITE_WH), MakeWidget({ 10, OVERWRITE_WH - 20 }, { 84, 11 }, WindowWidgetType::Button, WindowColour::Primary, STR_FILEBROWSER_OVERWRITE_TITLE), MakeWidget({ OVERWRITE_WW - 95, OVERWRITE_WH - 20 }, { 85, 11 }, WindowWidgetType::Button, WindowColour::Primary, STR_SAVE_PROMPT_CANCEL), }; diff --git a/src/openrct2-ui/windows/RefurbishRidePrompt.cpp b/src/openrct2-ui/windows/RefurbishRidePrompt.cpp index a29138870a..d72d7560ec 100644 --- a/src/openrct2-ui/windows/RefurbishRidePrompt.cpp +++ b/src/openrct2-ui/windows/RefurbishRidePrompt.cpp @@ -34,7 +34,7 @@ namespace OpenRCT2::Ui::Windows // clang-format off static constexpr Widget window_ride_refurbish_widgets[] = { - WINDOW_SHIM_WHITE(STR_REFURBISH_RIDE, WW, WH), + WINDOW_SHIM(STR_REFURBISH_RIDE, WW, WH), MakeWidget({ 10, WH - 22 }, { 85, 14 }, WindowWidgetType::Button, WindowColour::Primary, STR_REFURBISH), MakeWidget({ WW - 95, WH - 22 }, { 85, 14 }, WindowWidgetType::Button, WindowColour::Primary, STR_SAVE_PROMPT_CANCEL), }; diff --git a/src/openrct2-ui/windows/SavePrompt.cpp b/src/openrct2-ui/windows/SavePrompt.cpp index e07bdf6515..67097ce0c0 100644 --- a/src/openrct2-ui/windows/SavePrompt.cpp +++ b/src/openrct2-ui/windows/SavePrompt.cpp @@ -41,7 +41,7 @@ namespace OpenRCT2::Ui::Windows // clang-format off static constexpr Widget _savePromptWidgets[] = { - WINDOW_SHIM_WHITE(kStringIdNone, WW_SAVE, WH_SAVE), + WINDOW_SHIM(kStringIdNone, WW_SAVE, WH_SAVE), MakeWidget({ 2, 19}, {256, 12}, WindowWidgetType::LabelCentred, WindowColour::Primary, kStringIdEmpty ), // question/label MakeWidget({ 8, 35}, { 78, 14}, WindowWidgetType::Button, WindowColour::Primary, STR_SAVE_PROMPT_SAVE ), // save MakeWidget({ 91, 35}, { 78, 14}, WindowWidgetType::Button, WindowColour::Primary, STR_SAVE_PROMPT_DONT_SAVE), // don't save @@ -60,7 +60,7 @@ namespace OpenRCT2::Ui::Windows // clang-format off static constexpr Widget _quitPromptWidgets[] = { - WINDOW_SHIM_WHITE(STR_QUIT_GAME_PROMPT_TITLE, WW_QUIT, WH_QUIT), + WINDOW_SHIM(STR_QUIT_GAME_PROMPT_TITLE, WW_QUIT, WH_QUIT), MakeWidget({ 8, 19}, {78, 14}, WindowWidgetType::Button, WindowColour::Primary, STR_OK ), // ok MakeWidget({91, 19}, {78, 14}, WindowWidgetType::Button, WindowColour::Primary, STR_CANCEL), // cancel }; diff --git a/src/openrct2-ui/windows/ShortcutKeys.cpp b/src/openrct2-ui/windows/ShortcutKeys.cpp index 26a6ef1135..08ad62c6fd 100644 --- a/src/openrct2-ui/windows/ShortcutKeys.cpp +++ b/src/openrct2-ui/windows/ShortcutKeys.cpp @@ -574,7 +574,7 @@ namespace OpenRCT2::Ui::Windows }; static constexpr Widget WindowResetShortcutKeysPromptWidgets[] = { - WINDOW_SHIM_WHITE(STR_SHORTCUT_ACTION_RESET, RESET_PROMPT_WW, RESET_PROMPT_WH), + WINDOW_SHIM(STR_SHORTCUT_ACTION_RESET, RESET_PROMPT_WW, RESET_PROMPT_WH), MakeWidget( { 2, 30 }, { RESET_PROMPT_WW - 4, 12 }, WindowWidgetType::LabelCentred, WindowColour::Primary, STR_RESET_SHORTCUT_KEYS_PROMPT), diff --git a/src/openrct2-ui/windows/StaffFirePrompt.cpp b/src/openrct2-ui/windows/StaffFirePrompt.cpp index 38e0cab90a..e04a7a338c 100644 --- a/src/openrct2-ui/windows/StaffFirePrompt.cpp +++ b/src/openrct2-ui/windows/StaffFirePrompt.cpp @@ -36,7 +36,7 @@ namespace OpenRCT2::Ui::Windows // clang-format off // 0x9AFB4C static constexpr Widget _staffFireWidgets[] = { - WINDOW_SHIM_WHITE(WINDOW_TITLE, WW, WH), + WINDOW_SHIM(WINDOW_TITLE, WW, WH), MakeWidget({ 10, WH - 20}, {85, 14}, WindowWidgetType::Button, WindowColour::Primary, STR_YES ), MakeWidget({WW - 95, WH - 20}, {85, 14}, WindowWidgetType::Button, WindowColour::Primary, STR_SAVE_PROMPT_CANCEL), }; diff --git a/src/openrct2/interface/WindowBase.cpp b/src/openrct2/interface/WindowBase.cpp index 2173f7f2d7..6da8b110bd 100644 --- a/src/openrct2/interface/WindowBase.cpp +++ b/src/openrct2/interface/WindowBase.cpp @@ -49,7 +49,7 @@ namespace OpenRCT2 return CursorID::Arrow; } - static inline void repositionCloseButton(Widget& closeButton, int32_t windowWidth) + static inline void repositionCloseButton(Widget& closeButton, int32_t windowWidth, bool translucent) { auto closeButtonSize = Config::Get().interface.EnlargedUi ? kCloseButtonSizeTouch : kCloseButtonSize; if (Config::Get().interface.WindowButtonsOnTheLeft) @@ -64,11 +64,10 @@ namespace OpenRCT2 } // Set appropriate close button - bool useWhite = closeButton.string == kCloseBoxStringWhiteLarge || closeButton.string == kCloseBoxStringWhiteNormal; if (closeButtonSize == kCloseButtonSizeTouch) - closeButton.string = !useWhite ? kCloseBoxStringBlackLarge : kCloseBoxStringWhiteLarge; + closeButton.string = !translucent ? kCloseBoxStringBlackLarge : kCloseBoxStringWhiteLarge; else - closeButton.string = !useWhite ? kCloseBoxStringBlackNormal : kCloseBoxStringWhiteNormal; + closeButton.string = !translucent ? kCloseBoxStringBlackNormal : kCloseBoxStringWhiteNormal; } void WindowBase::ResizeFrame() @@ -93,7 +92,10 @@ namespace OpenRCT2 // Close button auto& closeButton = widgets[2]; if (closeButton.type == WindowWidgetType::CloseBox || closeButton.type == WindowWidgetType::Empty) - repositionCloseButton(closeButton, width); + { + bool translucent = colours[closeButton.colour].hasFlag(ColourFlag::translucent); + repositionCloseButton(closeButton, width, translucent); + } // Page/resize widget if (widgets.size() >= 4)