diff --git a/include/IEventReceiver.h b/include/IEventReceiver.h index e9f7c32a..3c07f0c6 100644 --- a/include/IEventReceiver.h +++ b/include/IEventReceiver.h @@ -115,6 +115,7 @@ namespace irr //! The mouse wheel was moved. Use Wheel value in event data to find out //! in what direction and how fast. EMIE_MOUSE_WHEEL, + EMIE_MOUSE_WHEEL_X, // only for OSX! //! Left mouse button double click. //! This event is generated after the second EMIE_LMOUSE_PRESSED_DOWN event. diff --git a/source/Irrlicht/CIrrDeviceOSX.mm b/source/Irrlicht/CIrrDeviceOSX.mm index c0d1b4c9..258e9676 100644 --- a/source/Irrlicht/CIrrDeviceOSX.mm +++ b/source/Irrlicht/CIrrDeviceOSX.mm @@ -1051,13 +1051,21 @@ bool CIrrDeviceMacOSX::run() case NSScrollWheel: ievent.EventType = irr::EET_MOUSE_INPUT_EVENT; - ievent.MouseInput.Event = irr::EMIE_MOUSE_WHEEL; - ievent.MouseInput.Wheel = [(NSEvent *)event deltaY]; - if (ievent.MouseInput.Wheel < 1.0f) - ievent.MouseInput.Wheel *= 10.0f; - else - ievent.MouseInput.Wheel *= 5.0f; - postMouseEvent(event,ievent); + // MultiCraft specific thing to smoothly change HUD items, + // using the side scrolling on the touchpad + if ([event deltaX] != 0) { + ievent.MouseInput.Event = irr::EMIE_MOUSE_WHEEL_X; + ievent.MouseInput.Wheel = (s32) [event deltaX]; + postMouseEvent(event,ievent); + break; + } + ievent.MouseInput.Event = irr::EMIE_MOUSE_WHEEL; + ievent.MouseInput.Wheel = (s32) [event deltaY]; + if (ievent.MouseInput.Wheel < 1.0f) + ievent.MouseInput.Wheel *= 10.0f; + else + ievent.MouseInput.Wheel *= 5.0f; + postMouseEvent(event,ievent); break; default: