From 8d1bb273d8dc385bc102d3fdfa27e5f77aec2bba Mon Sep 17 00:00:00 2001 From: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> Date: Mon, 24 Feb 2025 18:18:12 +0100 Subject: [PATCH] WIP: Make title bar bigger in Enlarged UI mode --- src/openrct2-ui/WindowManager.cpp | 2 ++ src/openrct2-ui/interface/Widget.cpp | 2 ++ src/openrct2-ui/interface/Window.cpp | 44 +++++++++++++++++++++++----- src/openrct2-ui/interface/Window.h | 6 ++-- src/openrct2/interface/Widget.h | 1 + 5 files changed, 45 insertions(+), 10 deletions(-) diff --git a/src/openrct2-ui/WindowManager.cpp b/src/openrct2-ui/WindowManager.cpp index 2ef0d4fb90..a4afe0520f 100644 --- a/src/openrct2-ui/WindowManager.cpp +++ b/src/openrct2-ui/WindowManager.cpp @@ -840,6 +840,8 @@ public: std::unique_ptr&& wp, WindowClass cls, ScreenCoordsXY pos, int32_t width, int32_t height, uint32_t flags) override { + // auto titleBarHeight = (flags & WF_NO_TITLE_BAR) ? 0 : GetTitleBarHeight(); + if (flags & WF_AUTO_POSITION) { if (flags & WF_CENTRE_SCREEN) diff --git a/src/openrct2-ui/interface/Widget.cpp b/src/openrct2-ui/interface/Widget.cpp index 9e5578f9d2..cf57526556 100644 --- a/src/openrct2-ui/interface/Widget.cpp +++ b/src/openrct2-ui/interface/Widget.cpp @@ -568,6 +568,8 @@ namespace OpenRCT2::Ui topLeft.x += width / 2; if (Config::Get().interface.WindowButtonsOnTheLeft) topLeft.x += kCloseButtonSize; + if (Config::Get().interface.EnlargedUi) + topLeft.y += 6; DrawTextEllipsised( dpi, topLeft, width, widget->text, Formatter::Common(), diff --git a/src/openrct2-ui/interface/Window.cpp b/src/openrct2-ui/interface/Window.cpp index da278e5735..647e0c391d 100644 --- a/src/openrct2-ui/interface/Window.cpp +++ b/src/openrct2-ui/interface/Window.cpp @@ -470,32 +470,55 @@ namespace OpenRCT2 this, callWidget, title, description, descriptionArgs, existingText, existingArgs, maxLength); } - void Window::ResizeFrame() + int32_t Window::ResizeFrame() { // Frame widgets[0].right = width - 1; widgets[0].bottom = height - 1; + // Title widgets[1].right = width - 2; + // Close button + auto closeButtonSize = Config::Get().interface.EnlargedUi ? kCloseButtonSizeTouch : kCloseButtonSize; if (Config::Get().interface.WindowButtonsOnTheLeft) { widgets[2].left = 2; - widgets[2].right = 2 + kCloseButtonSize; + widgets[2].right = 2 + closeButtonSize; } else { - widgets[2].left = width - 3 - kCloseButtonSize; + widgets[2].left = width - 3 - closeButtonSize; widgets[2].right = width - 3; } + + auto defaultHeight = OpenRCT2::Ui::Windows::GetTitleBarHeight(); + auto currentHeight = widgets[1].height(); + auto heightDifference = defaultHeight - currentHeight; + if (heightDifference != 0) + { + widgets[1].bottom += heightDifference; + widgets[2].bottom += heightDifference; + + for (size_t i = 3; i < widgets.size(); i++) + { + widgets[i].top += heightDifference; + widgets[i].bottom += heightDifference; + } + } + + return heightDifference; } - void Window::ResizeFrameWithPage() + int32_t Window::ResizeFrameWithPage() { - ResizeFrame(); - // Page background - widgets[3].right = width - 1; - widgets[3].bottom = height - 1; + auto heightDifference = ResizeFrame(); + + constexpr auto pageBackgroundOffset = 3; + widgets[pageBackgroundOffset].right = width - 1; + widgets[pageBackgroundOffset].bottom = height - 1; + + return heightDifference; } void Window::ResizeSpinner(WidgetIndex widgetIndex, const ScreenCoordsXY& origin, const ScreenSize& size) @@ -1136,4 +1159,9 @@ namespace OpenRCT2::Ui::Windows WindowZoomOut(*mainWindow, atCursor); } + int16_t GetTitleBarHeight() + { + return Config::Get().interface.EnlargedUi ? 24 : 12; + } + } // namespace OpenRCT2::Ui::Windows diff --git a/src/openrct2-ui/interface/Window.h b/src/openrct2-ui/interface/Window.h index 87cc54e876..45a55fd417 100644 --- a/src/openrct2-ui/interface/Window.h +++ b/src/openrct2-ui/interface/Window.h @@ -40,8 +40,8 @@ namespace OpenRCT2 WidgetIndex callWidget, StringId title, StringId description, const Formatter& descriptionArgs, StringId existingText, uintptr_t existingArgs, int32_t maxLength); - void ResizeFrame(); - void ResizeFrameWithPage(); + int32_t ResizeFrame(); + int32_t ResizeFrameWithPage(); void ResizeSpinner(WidgetIndex widgetIndex, const ScreenCoordsXY& origin, const ScreenSize& size); void ResizeDropdown(WidgetIndex widgetIndex, const ScreenCoordsXY& origin, const ScreenSize& size); @@ -91,4 +91,6 @@ namespace OpenRCT2::Ui::Windows void WindowZoomIn(WindowBase& w, bool atCursor); void WindowZoomOut(WindowBase& w, bool atCursor); void MainWindowZoom(bool zoomIn, bool atCursor); + + int16_t GetTitleBarHeight(); } // namespace OpenRCT2::Ui::Windows diff --git a/src/openrct2/interface/Widget.h b/src/openrct2/interface/Widget.h index 91c9b76f36..1aabb45ae2 100644 --- a/src/openrct2/interface/Widget.h +++ b/src/openrct2/interface/Widget.h @@ -152,6 +152,7 @@ namespace OpenRCT2 }; constexpr uint8_t kCloseButtonSize = 10; + constexpr uint8_t kCloseButtonSizeTouch = 20; constexpr int32_t kScrollableRowHeight = 12; constexpr uint8_t kListRowHeight = 12;