1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-06 06:32:56 +01:00

Merge pull request #23687 from ZehMatt/fix-23686

Fix #23686: Shortcut window crashing and missing widgets
This commit is contained in:
Matt
2025-01-23 11:37:32 +02:00
committed by GitHub
3 changed files with 8 additions and 3 deletions

View File

@@ -961,7 +961,7 @@ namespace OpenRCT2
{
windowClass = w->classification;
windowNumber = w->number;
widget = &w->widgets[widgetIndex];
widget = widgetIndex == kWidgetIndexNull ? nullptr : &w->widgets[widgetIndex];
}
InputWidgetOverChangeCheck(windowClass, windowNumber, widgetIndex);

View File

@@ -527,12 +527,17 @@ namespace OpenRCT2
void WindowAlignTabs(WindowBase* w, WidgetIndex start_tab_id, WidgetIndex end_tab_id)
{
assert(start_tab_id < w->widgets.size());
assert(end_tab_id < w->widgets.size());
int32_t i, x = w->widgets[start_tab_id].left;
int32_t tab_width = w->widgets[start_tab_id].width();
for (i = start_tab_id; i <= end_tab_id; i++)
{
auto& widget = w->widgets[i];
assert(widget.type == WindowWidgetType::Tab);
if (!WidgetIsDisabled(*w, i))
{
widget.left = x;

View File

@@ -248,7 +248,7 @@ namespace OpenRCT2::Ui::Windows
widgets[WIDX_SCROLL].bottom = height - 19;
widgets[WIDX_RESET].top = height - 16;
widgets[WIDX_RESET].bottom = height - 5;
WindowAlignTabs(this, WIDX_TAB_0, static_cast<WidgetIndex>(WIDX_TAB_0 + _tabs.size()));
WindowAlignTabs(this, WIDX_TAB_0, static_cast<WidgetIndex>(WIDX_TAB_0 + _tabs.size() - 1));
// Set selected tab
for (size_t i = 0; i < _tabs.size(); i++)
@@ -450,7 +450,7 @@ namespace OpenRCT2::Ui::Windows
void InitialiseWidgets()
{
widgets.clear();
widgets.insert(widgets.begin(), std::begin(_shortcutWidgets), std::end(_shortcutWidgets) - 1);
widgets.insert(widgets.begin(), std::begin(_shortcutWidgets), std::end(_shortcutWidgets));
int32_t x = 3;
for (size_t i = 0; i < _tabs.size(); i++)