2
0
Эх сурвалжийг харах

sdl2 mouse wheel scrolling rev1

Azaezel 10 жил өмнө
parent
commit
06f6819d63

+ 10 - 0
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);
       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)
 void PlatformWindowSDL::_triggerMouseButtonNotify(const SDL_Event& event)
 {
 {
    S32 action = (event.type == SDL_MOUSEBUTTONDOWN) ? SI_MAKE : SI_BREAK;
    S32 action = (event.type == SDL_MOUSEBUTTONDOWN) ? SI_MAKE : SI_BREAK;
@@ -536,6 +541,11 @@ void PlatformWindowSDL::_processSDLEvent(SDL_Event &evt)
          break;
          break;
       }
       }
 
 
+      case SDL_MOUSEWHEEL:
+      {
+         _triggerMouseWheelNotify(evt);
+         break;
+      }
       case SDL_MOUSEBUTTONDOWN:
       case SDL_MOUSEBUTTONDOWN:
       case SDL_MOUSEBUTTONUP:
       case SDL_MOUSEBUTTONUP:
       {
       {

+ 1 - 0
Engine/source/windowManager/sdl/sdlWindow.h

@@ -92,6 +92,7 @@ private:
    void _processSDLEvent(SDL_Event &evt);
    void _processSDLEvent(SDL_Event &evt);
    void _triggerMouseLocationNotify(const SDL_Event& evt);
    void _triggerMouseLocationNotify(const SDL_Event& evt);
    void _triggerMouseButtonNotify(const SDL_Event& event);
    void _triggerMouseButtonNotify(const SDL_Event& event);
+   void _triggerMouseWheelNotify(const SDL_Event& event);
    void _triggerKeyNotify(const SDL_Event& event);
    void _triggerKeyNotify(const SDL_Event& event);
    void _triggerTextNotify(const SDL_Event& event);
    void _triggerTextNotify(const SDL_Event& event);
 
 

+ 8 - 0
Engine/source/windowManager/sdl/sdlWindowMgr.cpp

@@ -222,6 +222,14 @@ void PlatformWindowManagerSDL::_process()
             break;
             break;
          }
          }
 
 
+         case SDL_MOUSEWHEEL:
+         {
+            PlatformWindowSDL *window = mWindowMap[evt.wheel.windowID];
+            if (window)
+               window->_processSDLEvent(evt);
+            break;
+         }
+
          case SDL_MOUSEBUTTONDOWN:
          case SDL_MOUSEBUTTONDOWN:
          case SDL_MOUSEBUTTONUP:
          case SDL_MOUSEBUTTONUP:
          {
          {