mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-04 13:42:55 +01:00
Merge pull request #24288 from AaronVanGeffen/close-buttons
Generalise white close button strings to all translucent title bars
This commit is contained in:
@@ -16,7 +16,7 @@
|
||||
#include <openrct2/interface/Widget.h>
|
||||
|
||||
// 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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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),
|
||||
};
|
||||
|
||||
@@ -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),
|
||||
};
|
||||
|
||||
@@ -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),
|
||||
};
|
||||
|
||||
@@ -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
|
||||
};
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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),
|
||||
};
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user