1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-18 12:33:17 +01:00

Fixed crash caused by window not being properly initialized

This commit is contained in:
Jonathan Hjorth
2021-09-28 21:25:07 +02:00
parent 419201f476
commit 762005f25a

View File

@@ -115,8 +115,9 @@ private:
CoordsXY _selectionStart;
CoordsXY _previousClipSelectionA;
CoordsXY _previousClipSelectionB;
bool _toolActive;
bool _dragging;
bool _toolActive{ false };
bool _dragging{ false };
public:
void OnCloseButton()
{
@@ -384,6 +385,14 @@ public:
return { 1000, 0 };
}
void SetClipHeight(const uint8_t clipheight)
{
gClipHeight = clipheight;
rct_widget* widget = &window_view_clipping_widgets[WIDX_CLIP_HEIGHT_SLIDER];
const float clip_height_ratio = static_cast<float>(gClipHeight) / 255;
this->scrolls[0].h_left = static_cast<int16_t>(std::ceil(clip_height_ratio * (this->scrolls[0].h_right - (widget->width() - 1))));
}
private:
void OnClose() override
{
@@ -396,14 +405,6 @@ private:
}
}
void SetClipHeight(const uint8_t clipheight)
{
gClipHeight = clipheight;
rct_widget* widget = &window_view_clipping_widgets[WIDX_CLIP_HEIGHT_SLIDER];
const float clip_height_ratio = static_cast<float>(gClipHeight) / 255;
this->scrolls[0].h_left = static_cast<int16_t>(std::ceil(clip_height_ratio * (this->scrolls[0].h_right - (widget->width() - 1))));
}
bool IsActive()
{
if (!(input_test_flag(INPUT_FLAG_TOOL_ACTIVE)))
@@ -421,36 +422,22 @@ rct_window* window_view_clipping_open()
if (window == nullptr)
{
window = WindowCreate<ViewClippingWindow>(WC_VIEW_CLIPPING, ScreenCoordsXY(32, 32), WW, WH);
window->widgets = window_view_clipping_widgets;
window->enabled_widgets = (1ULL << WIDX_CLOSE) | (1ULL << WIDX_CLIP_CHECKBOX_ENABLE) | (1ULL << WIDX_CLIP_HEIGHT_VALUE)
| (1ULL << WIDX_CLIP_HEIGHT_INCREASE) | (1ULL << WIDX_CLIP_HEIGHT_DECREASE) | (1ULL << WIDX_CLIP_HEIGHT_SLIDER)
| (1ULL << WIDX_CLIP_SELECTOR) | (1ULL << WIDX_CLIP_CLEAR);
window->hold_down_widgets = (1ULL << WIDX_CLIP_HEIGHT_INCREASE) | (1UL << WIDX_CLIP_HEIGHT_DECREASE);
WindowInitScrollWidgets(window);
}
return window;
/*
rct_window* window;
// Initialise the clip height slider from the current clip height value.
dynamic_cast<ViewClippingWindow*>(window)->SetClipHeight(gClipHeight);
window_push_others_below(window);
// Get the main viewport to set the view clipping flag.
rct_window* mainWindow = window_get_main();
// Check if window is already open
window = window_find_by_class(WC_VIEW_CLIPPING);
if (window != nullptr)
{
return window;
}
// Window is not open - create it.
window = WindowCreate(ScreenCoordsXY(32, 32), WW, WH, &window_view_clipping_events, WC_VIEW_CLIPPING, 0);
window->widgets = window_view_clipping_widgets;
window->enabled_widgets = (1ULL << WIDX_CLOSE) | (1ULL << WIDX_CLIP_CHECKBOX_ENABLE) | (1ULL << WIDX_CLIP_HEIGHT_VALUE)
| (1ULL << WIDX_CLIP_HEIGHT_INCREASE) | (1ULL << WIDX_CLIP_HEIGHT_DECREASE) | (1ULL << WIDX_CLIP_HEIGHT_SLIDER)
| (1ULL << WIDX_CLIP_SELECTOR) | (1ULL << WIDX_CLIP_CLEAR);
window->hold_down_widgets = (1ULL << WIDX_CLIP_HEIGHT_INCREASE) | (1UL << WIDX_CLIP_HEIGHT_DECREASE);
WindowInitScrollWidgets(window);
// Initialise the clip height slider from the current clip height value.
window_view_clipping_set_clipheight(window, gClipHeight);
window_push_others_below(window);
// Turn on view clipping when the window is opened.
if (mainWindow != nullptr)
{
@@ -458,11 +445,7 @@ rct_window* window_view_clipping_open()
mainWindow->Invalidate();
}
_toolActive = false;
_dragging = false;
return window;
*/
}
/*
// Done