From 06f6819d636096b5d11558c327914f4d11428a8f Mon Sep 17 00:00:00 2001 From: Azaezel Date: Wed, 29 Jul 2015 11:24:48 -0500 Subject: [PATCH 1/2] 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: { From 4a8f6737b6a21e264ec071805f600c7815302724 Mon Sep 17 00:00:00 2001 From: Azaezel Date: Wed, 29 Jul 2015 20:36:33 -0500 Subject: [PATCH 2/2] Mouse wheel check has to occur before mouse motion. Apparently the one is a subset of the other. also thanks @dottools for the proper codeline. --- Engine/source/windowManager/sdl/sdlWindow.cpp | 14 +++++++------- Engine/source/windowManager/sdl/sdlWindowMgr.cpp | 16 ++++++++-------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/Engine/source/windowManager/sdl/sdlWindow.cpp b/Engine/source/windowManager/sdl/sdlWindow.cpp index a9f8140e8..a1fe16f68 100644 --- a/Engine/source/windowManager/sdl/sdlWindow.cpp +++ b/Engine/source/windowManager/sdl/sdlWindow.cpp @@ -434,7 +434,7 @@ void PlatformWindowSDL::_triggerMouseLocationNotify(const SDL_Event& evt) void PlatformWindowSDL::_triggerMouseWheelNotify(const SDL_Event& evt) { - mouseEvent.trigger(getWindowId(), 0, evt.wheel.y, evt.wheel.y, false); + wheelEvent.trigger(getWindowId(), 0, evt.wheel.x, evt.wheel.y); } void PlatformWindowSDL::_triggerMouseButtonNotify(const SDL_Event& event) @@ -535,17 +535,17 @@ void PlatformWindowSDL::_processSDLEvent(SDL_Event &evt) break; } - case SDL_MOUSEMOTION: - { - _triggerMouseLocationNotify(evt); - break; - } - case SDL_MOUSEWHEEL: { _triggerMouseWheelNotify(evt); break; } + + case SDL_MOUSEMOTION: + { + _triggerMouseLocationNotify(evt); + break; + } case SDL_MOUSEBUTTONDOWN: case SDL_MOUSEBUTTONUP: { diff --git a/Engine/source/windowManager/sdl/sdlWindowMgr.cpp b/Engine/source/windowManager/sdl/sdlWindowMgr.cpp index 014411353..61a7e7da6 100644 --- a/Engine/source/windowManager/sdl/sdlWindowMgr.cpp +++ b/Engine/source/windowManager/sdl/sdlWindowMgr.cpp @@ -214,14 +214,6 @@ void PlatformWindowManagerSDL::_process() break; } - case SDL_MOUSEMOTION: - { - PlatformWindowSDL *window = mWindowMap[evt.motion.windowID]; - if(window) - window->_processSDLEvent(evt); - break; - } - case SDL_MOUSEWHEEL: { PlatformWindowSDL *window = mWindowMap[evt.wheel.windowID]; @@ -230,6 +222,14 @@ void PlatformWindowManagerSDL::_process() break; } + case SDL_MOUSEMOTION: + { + PlatformWindowSDL *window = mWindowMap[evt.motion.windowID]; + if(window) + window->_processSDLEvent(evt); + break; + } + case SDL_MOUSEBUTTONDOWN: case SDL_MOUSEBUTTONUP: {