From c4e3b6cb2c4d8dceb45ee2da549ec42daabc053d Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 24 Aug 2013 23:00:27 +0300 Subject: fix mouse wheel usage in SDL2. --- src/gui/gui.h | 6 ++++++ src/gui/sdlinput.cpp | 27 +++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) (limited to 'src/gui') diff --git a/src/gui/gui.h b/src/gui/gui.h index 0b4b4a292..3cdab558d 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -157,6 +157,12 @@ class Gui final : public gcn::Gui void removeDragged(gcn::Widget *widget); + int getLastMouseX() + { return mLastMouseX; } + + int getLastMouseY() + { return mLastMouseY; } + protected: void handleMouseMoved(const gcn::MouseInput &mouseInput); diff --git a/src/gui/sdlinput.cpp b/src/gui/sdlinput.cpp index 884ce25dd..ae8c6d7d4 100644 --- a/src/gui/sdlinput.cpp +++ b/src/gui/sdlinput.cpp @@ -64,6 +64,10 @@ #include "mouseinput.h" #include "sdlshared.h" +#ifdef USE_SDL2 +#include "gui/gui.h" +#endif + #include #include @@ -155,6 +159,29 @@ void SDLInput::pushInput(const SDL_Event &event) keyInput.setText(event.text.text); mKeyInputQueue.push(keyInput); break; + + case SDL_MOUSEWHEEL: + { + const int x = event.wheel.x; + const int y = event.wheel.y; + if (y) + { + mouseInput.setX(gui->getLastMouseX()); + mouseInput.setY(gui->getLastMouseY()); +#ifdef ANDROID + mouseInput.setReal(0, 0); +#endif + mouseInput.setButton(-1); + if (y > 0) + mouseInput.setType(gcn::MouseInput::WHEEL_MOVED_UP); + else + mouseInput.setType(gcn::MouseInput::WHEEL_MOVED_DOWN); + mouseInput.setTimeStamp(SDL_GetTicks()); + mMouseInputQueue.push(mouseInput); + } + + break; + } #endif #ifdef ANDROID -- cgit v1.2.3-60-g2f50