mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-30 02:05:13 +01:00
Refactor widgets state (#23621)
* Refactor windows to not share widget state * First half of refactoring all the windows * Refactor the remaining windows, compiles but has issues * Fix drawing only every second widget * Remove the need of an terminating widget * Address WidgetIndex signedness issues; use kWidgetIndexNull more * Address constexpr issue with Widget content union * Fix tabs in scenery window * Fix tabs in object selection window * Adjust custom widget index for CustomTool events * Use STR_NONE for default tooltip initialisation * Adjustment for mingw compiler * Fix bottom toolbar using the widget declaration not instance * Remove pointless code in Guest window, handled by SetPage * Prevent out of bounds crash * Move scroll widgets initialization to SetPage in Cheats window * Remove special logic in Options window * Remove special logic in Park window * Remove special logic for Player window * Remove special logic for Research window * Remove special logic for Ride window * Remove special logic for Staff window * Remove special logic for Finances window * Remove special logic for MapGen window * Remove special logic for editor objective options window * Remove special logic for editor scenario options window * Fix widgets not being set since page is initialized to 0 * Remove more redundant code * Fix remaining access to widget declarations * Remove unused variable * Fix editor object selection tabs on successive windows --------- Co-authored-by: Aaron van Geffen <aaron@aaronweb.net>
This commit is contained in:
@@ -474,9 +474,9 @@ namespace OpenRCT2::Ui::Windows
|
||||
// Since the plugin may alter widget positions and sizes during an update event,
|
||||
// we need to force an update for all list view scrollbars
|
||||
WidgetIndex widgetIndex = 0;
|
||||
for (auto widget = widgets; widget->type != WindowWidgetType::Last; widget++)
|
||||
for (auto& widget : widgets)
|
||||
{
|
||||
if (widget->type == WindowWidgetType::Scroll)
|
||||
if (widget.type == WindowWidgetType::Scroll)
|
||||
{
|
||||
WidgetScrollUpdateThumbs(*this, widgetIndex);
|
||||
}
|
||||
@@ -511,13 +511,13 @@ namespace OpenRCT2::Ui::Windows
|
||||
ft.Add<const char*>(desc.Title.c_str());
|
||||
|
||||
size_t scrollIndex = 0;
|
||||
for (auto widget = widgets; widget->type != WindowWidgetType::Last; widget++)
|
||||
for (const auto& widget : widgets)
|
||||
{
|
||||
if (widget->type == WindowWidgetType::Scroll)
|
||||
if (widget.type == WindowWidgetType::Scroll)
|
||||
{
|
||||
auto& listView = _info.ListViews[scrollIndex];
|
||||
auto wwidth = widget->width() + 1 - 2;
|
||||
auto wheight = widget->height() + 1 - 2;
|
||||
auto wwidth = widget.width() + 1 - 2;
|
||||
auto wheight = widget.height() + 1 - 2;
|
||||
if (listView.GetScrollbars() == ScrollbarType::Horizontal
|
||||
|| listView.GetScrollbars() == ScrollbarType::Both)
|
||||
{
|
||||
@@ -780,9 +780,9 @@ namespace OpenRCT2::Ui::Windows
|
||||
std::optional<WidgetIndex> GetViewportWidgetIndex()
|
||||
{
|
||||
WidgetIndex widgetIndex = 0;
|
||||
for (auto widget = widgets; widget->type != WindowWidgetType::Last; widget++)
|
||||
for (auto& widget : widgets)
|
||||
{
|
||||
if (widget->type == WindowWidgetType::Viewport)
|
||||
if (widget.type == WindowWidgetType::Viewport)
|
||||
{
|
||||
return widgetIndex;
|
||||
}
|
||||
@@ -943,8 +943,7 @@ namespace OpenRCT2::Ui::Windows
|
||||
}
|
||||
}
|
||||
|
||||
widgetList.push_back(kWidgetsEnd);
|
||||
widgets = widgetList.data();
|
||||
SetWidgets(widgetList);
|
||||
|
||||
WindowInitScrollWidgets(*this);
|
||||
UpdateViewport();
|
||||
|
||||
Reference in New Issue
Block a user