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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user