From 06f6819d636096b5d11558c327914f4d11428a8f Mon Sep 17 00:00:00 2001 From: Azaezel Date: Wed, 29 Jul 2015 11:24:48 -0500 Subject: [PATCH] sdl2 mouse wheel scrolling rev1 --- Engine/source/windowManager/sdl/sdlWindow.cpp | 10 ++++++++++ Engine/source/windowManager/sdl/sdlWindow.h | 1 + Engine/source/windowManager/sdl/sdlWindowMgr.cpp | 8 ++++++++ 3 files changed, 19 insertions(+) diff --git a/Engine/source/windowManager/sdl/sdlWindow.cpp b/Engine/source/windowManager/sdl/sdlWindow.cpp index 9046a7651..a9f8140e8 100644 --- a/Engine/source/windowManager/sdl/sdlWindow.cpp +++ b/Engine/source/windowManager/sdl/sdlWindow.cpp @@ -432,6 +432,11 @@ void PlatformWindowSDL::_triggerMouseLocationNotify(const SDL_Event& evt) mouseEvent.trigger(getWindowId(), 0, evt.motion.xrel, evt.motion.yrel, true); } +void PlatformWindowSDL::_triggerMouseWheelNotify(const SDL_Event& evt) +{ + mouseEvent.trigger(getWindowId(), 0, evt.wheel.y, evt.wheel.y, false); +} + void PlatformWindowSDL::_triggerMouseButtonNotify(const SDL_Event& event) { S32 action = (event.type == SDL_MOUSEBUTTONDOWN) ? SI_MAKE : SI_BREAK; @@ -536,6 +541,11 @@ void PlatformWindowSDL::_processSDLEvent(SDL_Event &evt) break; } + case SDL_MOUSEWHEEL: + { + _triggerMouseWheelNotify(evt); + break; + } case SDL_MOUSEBUTTONDOWN: case SDL_MOUSEBUTTONUP: { diff --git a/Engine/source/windowManager/sdl/sdlWindow.h b/Engine/source/windowManager/sdl/sdlWindow.h index 5c809da07..75abdee4f 100644 --- a/Engine/source/windowManager/sdl/sdlWindow.h +++ b/Engine/source/windowManager/sdl/sdlWindow.h @@ -92,6 +92,7 @@ private: void _processSDLEvent(SDL_Event &evt); void _triggerMouseLocationNotify(const SDL_Event& evt); void _triggerMouseButtonNotify(const SDL_Event& event); + void _triggerMouseWheelNotify(const SDL_Event& event); void _triggerKeyNotify(const SDL_Event& event); void _triggerTextNotify(const SDL_Event& event); diff --git a/Engine/source/windowManager/sdl/sdlWindowMgr.cpp b/Engine/source/windowManager/sdl/sdlWindowMgr.cpp index 788981dac..014411353 100644 --- a/Engine/source/windowManager/sdl/sdlWindowMgr.cpp +++ b/Engine/source/windowManager/sdl/sdlWindowMgr.cpp @@ -222,6 +222,14 @@ void PlatformWindowManagerSDL::_process() break; } + case SDL_MOUSEWHEEL: + { + PlatformWindowSDL *window = mWindowMap[evt.wheel.windowID]; + if (window) + window->_processSDLEvent(evt); + break; + } + case SDL_MOUSEBUTTONDOWN: case SDL_MOUSEBUTTONUP: {