mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2025-12-21 14:53:02 +01:00
Prevent closing object selection window when selection is invalid (#23487)
* Prevent closing object selection window when selection is invalid * Ride window: remove superfluous virtual keyword from event signatures * Amend changelog
This commit is contained in:
@@ -12,6 +12,7 @@
|
|||||||
- Fix: [#23286] Currency formatted incorrectly in the in game console.
|
- Fix: [#23286] Currency formatted incorrectly in the in game console.
|
||||||
- Fix: [#23348] Console set commands don't print output properly.
|
- Fix: [#23348] Console set commands don't print output properly.
|
||||||
- Fix: [#23376] Peeps with balloons, hats and umbrellas may leave artifacts on screen.
|
- Fix: [#23376] Peeps with balloons, hats and umbrellas may leave artifacts on screen.
|
||||||
|
- Fix: [#23486] Object selection minimum requirements can be bypassed with close window hotkey.
|
||||||
|
|
||||||
0.4.17 (2024-12-08)
|
0.4.17 (2024-12-08)
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -300,6 +300,12 @@ namespace OpenRCT2::Ui::Windows
|
|||||||
VisibleListRefresh();
|
VisibleListRefresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CanClose() override
|
||||||
|
{
|
||||||
|
// Prevent window closure when selection is invalid
|
||||||
|
return EditorObjectSelectionWindowCheck();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* rct2: 0x006AB199
|
* rct2: 0x006AB199
|
||||||
|
|||||||
@@ -752,7 +752,7 @@ namespace OpenRCT2::Ui::Windows
|
|||||||
rideId = ride.id;
|
rideId = ride.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void OnOpen() override
|
void OnOpen() override
|
||||||
{
|
{
|
||||||
widgets = PageWidgets[WINDOW_RIDE_PAGE_MAIN];
|
widgets = PageWidgets[WINDOW_RIDE_PAGE_MAIN];
|
||||||
hold_down_widgets = PageHoldDownWidgets[WINDOW_RIDE_PAGE_MAIN];
|
hold_down_widgets = PageHoldDownWidgets[WINDOW_RIDE_PAGE_MAIN];
|
||||||
@@ -778,7 +778,7 @@ namespace OpenRCT2::Ui::Windows
|
|||||||
PopulateVehicleTypeDropdown(*ride, true);
|
PopulateVehicleTypeDropdown(*ride, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void OnClose() override
|
void OnClose() override
|
||||||
{
|
{
|
||||||
switch (page)
|
switch (page)
|
||||||
{
|
{
|
||||||
@@ -790,7 +790,7 @@ namespace OpenRCT2::Ui::Windows
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
virtual void OnResize() override
|
void OnResize() override
|
||||||
{
|
{
|
||||||
switch (page)
|
switch (page)
|
||||||
{
|
{
|
||||||
@@ -826,7 +826,7 @@ namespace OpenRCT2::Ui::Windows
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
virtual void OnUpdate() override
|
void OnUpdate() override
|
||||||
{
|
{
|
||||||
switch (page)
|
switch (page)
|
||||||
{
|
{
|
||||||
@@ -863,7 +863,7 @@ namespace OpenRCT2::Ui::Windows
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void OnPrepareDraw() override
|
void OnPrepareDraw() override
|
||||||
{
|
{
|
||||||
switch (page)
|
switch (page)
|
||||||
{
|
{
|
||||||
@@ -899,7 +899,7 @@ namespace OpenRCT2::Ui::Windows
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
virtual void OnDraw(DrawPixelInfo& dpi) override
|
void OnDraw(DrawPixelInfo& dpi) override
|
||||||
{
|
{
|
||||||
switch (page)
|
switch (page)
|
||||||
{
|
{
|
||||||
@@ -936,7 +936,7 @@ namespace OpenRCT2::Ui::Windows
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual OpenRCT2String OnTooltip(WidgetIndex widgetIndex, StringId fallback) override
|
OpenRCT2String OnTooltip(WidgetIndex widgetIndex, StringId fallback) override
|
||||||
{
|
{
|
||||||
switch (page)
|
switch (page)
|
||||||
{
|
{
|
||||||
@@ -947,7 +947,7 @@ namespace OpenRCT2::Ui::Windows
|
|||||||
}
|
}
|
||||||
return { fallback, {} };
|
return { fallback, {} };
|
||||||
}
|
}
|
||||||
virtual void OnMouseDown(WidgetIndex widgetIndex) override
|
void OnMouseDown(WidgetIndex widgetIndex) override
|
||||||
{
|
{
|
||||||
switch (page)
|
switch (page)
|
||||||
{
|
{
|
||||||
@@ -980,7 +980,7 @@ namespace OpenRCT2::Ui::Windows
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
virtual void OnMouseUp(WidgetIndex widgetIndex) override
|
void OnMouseUp(WidgetIndex widgetIndex) override
|
||||||
{
|
{
|
||||||
switch (page)
|
switch (page)
|
||||||
{
|
{
|
||||||
@@ -1016,7 +1016,7 @@ namespace OpenRCT2::Ui::Windows
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
virtual void OnDropdown(WidgetIndex widgetIndex, int32_t selectedIndex) override
|
void OnDropdown(WidgetIndex widgetIndex, int32_t selectedIndex) override
|
||||||
{
|
{
|
||||||
switch (page)
|
switch (page)
|
||||||
{
|
{
|
||||||
@@ -1043,7 +1043,7 @@ namespace OpenRCT2::Ui::Windows
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
virtual void OnTextInput(WidgetIndex widgetIndex, std::string_view text) override
|
void OnTextInput(WidgetIndex widgetIndex, std::string_view text) override
|
||||||
{
|
{
|
||||||
switch (page)
|
switch (page)
|
||||||
{
|
{
|
||||||
@@ -1058,7 +1058,7 @@ namespace OpenRCT2::Ui::Windows
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
virtual ScreenSize OnScrollGetSize(int32_t scrollIndex) override
|
ScreenSize OnScrollGetSize(int32_t scrollIndex) override
|
||||||
{
|
{
|
||||||
switch (page)
|
switch (page)
|
||||||
{
|
{
|
||||||
@@ -1069,7 +1069,7 @@ namespace OpenRCT2::Ui::Windows
|
|||||||
}
|
}
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
virtual void OnScrollSelect(int32_t scrollIndex, int32_t scrollAreaType) override
|
void OnScrollSelect(int32_t scrollIndex, int32_t scrollAreaType) override
|
||||||
{
|
{
|
||||||
switch (page)
|
switch (page)
|
||||||
{
|
{
|
||||||
@@ -1078,7 +1078,7 @@ namespace OpenRCT2::Ui::Windows
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
virtual void OnScrollDraw(int32_t scrollIndex, DrawPixelInfo& dpi) override
|
void OnScrollDraw(int32_t scrollIndex, DrawPixelInfo& dpi) override
|
||||||
{
|
{
|
||||||
switch (page)
|
switch (page)
|
||||||
{
|
{
|
||||||
@@ -1096,7 +1096,7 @@ namespace OpenRCT2::Ui::Windows
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
virtual void OnToolDown(WidgetIndex widgetIndex, const ScreenCoordsXY& screenCoords) override
|
void OnToolDown(WidgetIndex widgetIndex, const ScreenCoordsXY& screenCoords) override
|
||||||
{
|
{
|
||||||
switch (page)
|
switch (page)
|
||||||
{
|
{
|
||||||
@@ -1108,7 +1108,7 @@ namespace OpenRCT2::Ui::Windows
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
virtual void OnToolDrag(WidgetIndex widgetIndex, const ScreenCoordsXY& screenCoords) override
|
void OnToolDrag(WidgetIndex widgetIndex, const ScreenCoordsXY& screenCoords) override
|
||||||
{
|
{
|
||||||
switch (page)
|
switch (page)
|
||||||
{
|
{
|
||||||
@@ -1120,7 +1120,7 @@ namespace OpenRCT2::Ui::Windows
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
virtual void OnToolAbort(WidgetIndex widgetIndex) override
|
void OnToolAbort(WidgetIndex widgetIndex) override
|
||||||
{
|
{
|
||||||
switch (page)
|
switch (page)
|
||||||
{
|
{
|
||||||
@@ -1129,7 +1129,7 @@ namespace OpenRCT2::Ui::Windows
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
virtual void OnViewportRotate() override
|
void OnViewportRotate() override
|
||||||
{
|
{
|
||||||
switch (page)
|
switch (page)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -227,6 +227,12 @@ void WindowSetWindowLimit(int32_t value)
|
|||||||
*/
|
*/
|
||||||
void WindowClose(WindowBase& w)
|
void WindowClose(WindowBase& w)
|
||||||
{
|
{
|
||||||
|
if (!w.CanClose())
|
||||||
|
{
|
||||||
|
// Something's preventing this window from closing -- bail out early
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
w.OnClose();
|
w.OnClose();
|
||||||
|
|
||||||
// Remove viewport
|
// Remove viewport
|
||||||
|
|||||||
@@ -85,6 +85,10 @@ struct WindowBase
|
|||||||
virtual void OnOpen()
|
virtual void OnOpen()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
virtual bool CanClose()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
virtual void OnClose()
|
virtual void OnClose()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user