diff --git a/src/openrct2-ui/windows/ViewClipping.cpp b/src/openrct2-ui/windows/ViewClipping.cpp index d619a25db4..5a58236e7f 100644 --- a/src/openrct2-ui/windows/ViewClipping.cpp +++ b/src/openrct2-ui/windows/ViewClipping.cpp @@ -84,6 +84,7 @@ static bool _dragging; static void window_view_clipping_close_button(rct_window* w); static void window_view_clipping_mouseup(rct_window* w, rct_widgetindex widgetIndex); +static void window_view_clipping_mousedown(rct_window*w, rct_widgetindex widgetIndex, rct_widget *widget); static void window_view_clipping_update(rct_window* w); static void window_view_clipping_tool_update(rct_window* w, rct_widgetindex widgetIndex, sint32 x, sint32 y); static void window_view_clipping_tool_down(rct_window* w, rct_widgetindex widgetIndex, sint32 x, sint32 y); @@ -98,7 +99,7 @@ static rct_window_event_list window_view_clipping_events = { window_view_clipping_close_button, window_view_clipping_mouseup, nullptr, - nullptr, + window_view_clipping_mousedown, nullptr, nullptr, window_view_clipping_update, @@ -160,6 +161,7 @@ rct_window * window_view_clipping_open() (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); window_init_scroll_widgets(window); @@ -224,20 +226,6 @@ static void window_view_clipping_mouseup(rct_window *w, rct_widgetindex widgetIn } window_invalidate(w); break; - case WIDX_CLIP_HEIGHT_INCREASE: - if (gClipHeight < 255) - window_view_clipping_set_clipheight(w, gClipHeight + 1); - mainWindow = window_get_main(); - if (mainWindow != nullptr) - window_invalidate(mainWindow); - break; - case WIDX_CLIP_HEIGHT_DECREASE: - if (gClipHeight > 0) - window_view_clipping_set_clipheight(w, gClipHeight - 1); - mainWindow = window_get_main(); - if (mainWindow != nullptr) - window_invalidate(mainWindow); - break; case WIDX_CLIP_HEIGHT_VALUE: // Toggle display of the cut height value in RAW vs UNITS if (gClipHeightDisplayType == DISPLAY_TYPE::DISPLAY_RAW) @@ -276,6 +264,29 @@ static void window_view_clipping_mouseup(rct_window *w, rct_widgetindex widgetIn } } +static void window_view_clipping_mousedown(rct_window* w, rct_widgetindex widgetIndex, rct_widget* widget) +{ + rct_window* mainWindow = window_get_main(); + + switch (widgetIndex) + { + case WIDX_CLIP_HEIGHT_INCREASE: + if (gClipHeight < 255) + window_view_clipping_set_clipheight(w, gClipHeight + 1); + mainWindow = window_get_main(); + if (mainWindow != nullptr) + window_invalidate(mainWindow); + break; + case WIDX_CLIP_HEIGHT_DECREASE: + if (gClipHeight > 0) + window_view_clipping_set_clipheight(w, gClipHeight - 1); + mainWindow = window_get_main(); + if (mainWindow != nullptr) + window_invalidate(mainWindow); + break; + } +} + static void window_view_clipping_update(rct_window *w) { const rct_widget *const widget = &window_view_clipping_widgets[WIDX_CLIP_HEIGHT_SLIDER]; diff --git a/src/openrct2/interface/Window.cpp b/src/openrct2/interface/Window.cpp index 02fc7f0137..14b7a3c5e0 100644 --- a/src/openrct2/interface/Window.cpp +++ b/src/openrct2/interface/Window.cpp @@ -303,7 +303,7 @@ static bool window_other_wheel_input(rct_window* w, rct_widgetindex widgetIndex, return false; } } - else + else if (widgetType == WWT_STEPPER) { buttonWidgetIndex = wheel < 0 ? widgetIndex + 1 : widgetIndex + 2; @@ -314,6 +314,10 @@ static bool window_other_wheel_input(rct_window* w, rct_widgetindex widgetIndex, return false; } } + else + { + return false; + } if (widget_is_disabled(w, buttonWidgetIndex)) {