From 059d60b404a0e7925c034fb147baca80504de183 Mon Sep 17 00:00:00 2001 From: Sasha Szpakowski Date: Sun, 19 Mar 2023 11:04:49 -0300 Subject: [PATCH] love.wheelmoved: add preciseX, preciseY, and direction enum parameters. Fixes #1910. --- src/modules/event/sdl/Event.cpp | 14 ++++++++++++++ src/modules/love/callbacks.lua | 4 ++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/modules/event/sdl/Event.cpp b/src/modules/event/sdl/Event.cpp index d64b8dfc3..ec9c44dcb 100644 --- a/src/modules/event/sdl/Event.cpp +++ b/src/modules/event/sdl/Event.cpp @@ -294,6 +294,20 @@ Message *Event::convert(const SDL_Event &e) case SDL_MOUSEWHEEL: vargs.emplace_back((double) e.wheel.x); vargs.emplace_back((double) e.wheel.y); +#if SDL_VERSION_ATLEAST(2, 0, 18) + // These values will be garbage if 2.0.18+ headers are used but a lower + // version of SDL is used at runtime, but other bits of code already + // prevent running in that situation. + vargs.emplace_back((double) e.wheel.preciseX); + vargs.emplace_back((double) e.wheel.preciseY); +#else + vargs.emplace_back((double) e.wheel.x); + vargs.emplace_back((double) e.wheel.y); +#endif + + txt = e.wheel.direction == SDL_MOUSEWHEEL_FLIPPED ? "flipped" : "standard"; + vargs.emplace_back(txt, strlen(txt)); + msg = new Message("wheelmoved", vargs); break; case SDL_FINGERDOWN: diff --git a/src/modules/love/callbacks.lua b/src/modules/love/callbacks.lua index 330f40c2c..a7560e678 100644 --- a/src/modules/love/callbacks.lua +++ b/src/modules/love/callbacks.lua @@ -49,8 +49,8 @@ function love.createhandlers() mousereleased = function (x,y,b,t,c) if love.mousereleased then return love.mousereleased(x,y,b,t,c) end end, - wheelmoved = function (x,y) - if love.wheelmoved then return love.wheelmoved(x,y) end + wheelmoved = function (x,y,px,py,dir) + if love.wheelmoved then return love.wheelmoved(x,y,px,py,dir) end end, touchpressed = function (id,x,y,dx,dy,p) if love.touchpressed then return love.touchpressed(id,x,y,dx,dy,p) end