Added scrolwheel delta to mouse event

This commit is contained in:
OmniaX-Dev 2026-04-18 05:06:44 +02:00
parent ad7b3e6bed
commit e2287c06f0
3 changed files with 9 additions and 4 deletions

View file

@ -61,6 +61,7 @@ namespace ogfx
f32 position_y; f32 position_y;
eButton button; eButton button;
eScrollDirection scroll { eScrollDirection::None }; eScrollDirection scroll { eScrollDirection::None };
f32 scrollAmount { 0 };
gui::Widget* mousePressedOnWidget { nullptr }; gui::Widget* mousePressedOnWidget { nullptr };
WindowCore& parentWindow; WindowCore& parentWindow;
}; };

View file

@ -462,12 +462,16 @@ namespace ogfx
else if (event.type == SDL_EVENT_MOUSE_WHEEL) else if (event.type == SDL_EVENT_MOUSE_WHEEL)
{ {
MouseEventData mmd = get_mouse_state(event); MouseEventData mmd = get_mouse_state(event);
if (event.wheel.y == -1) f32 delta = event.wheel.y;
if (event.wheel.direction == SDL_MOUSEWHEEL_FLIPPED)
delta = -delta;
if (delta < 0)
mmd.scroll = MouseEventData::eScrollDirection::Down; mmd.scroll = MouseEventData::eScrollDirection::Down;
else if (event.wheel.y == 1) else if (delta > 0)
mmd.scroll = MouseEventData::eScrollDirection::Up; mmd.scroll = MouseEventData::eScrollDirection::Up;
else else
mmd.scroll = MouseEventData::eScrollDirection::None; mmd.scroll = MouseEventData::eScrollDirection::None;
mmd.scrollAmount = delta;
ostd::SignalHandler::emitSignal(ostd::BuiltinSignals::MouseScrolled, ostd::Signal::Priority::RealTime, mmd); ostd::SignalHandler::emitSignal(ostd::BuiltinSignals::MouseScrolled, ostd::Signal::Priority::RealTime, mmd);
} }
else if (event.type == SDL_EVENT_MOUSE_BUTTON_DOWN) else if (event.type == SDL_EVENT_MOUSE_BUTTON_DOWN)

View file

@ -83,9 +83,9 @@ namespace ogfx
return; return;
f32 offset_y = 0; f32 offset_y = 0;
if (event.mouse->scroll == MouseEventData::eScrollDirection::Down) if (event.mouse->scroll == MouseEventData::eScrollDirection::Down)
offset_y = -(m_scrollSpeed.y * 15.0f); offset_y = (m_scrollSpeed.y * event.mouse->scrollAmount * 15.0f);
else if (event.mouse->scroll == MouseEventData::eScrollDirection::Up) else if (event.mouse->scroll == MouseEventData::eScrollDirection::Up)
offset_y = (m_scrollSpeed.y * 15.0f); offset_y = (m_scrollSpeed.y * event.mouse->scrollAmount * 15.0f);
addScrollOffset({ 0, offset_y }); addScrollOffset({ 0, offset_y });
event.handle(); event.handle();
} }