diff --git a/src/client/inputhandler.cpp b/src/client/inputhandler.cpp index b09c7d31..e42a6db4 100644 --- a/src/client/inputhandler.cpp +++ b/src/client/inputhandler.cpp @@ -116,6 +116,12 @@ bool MyEventReceiver::OnEvent(const SEvent &event) if (event.MouseInput.Event == EMIE_RMOUSE_LEFT_UP) { rightreleased = true; } +#if defined(__MACH__) && defined(__APPLE__) && !defined(__IOS__) + if (event.MouseInput.Event == EMIE_MOUSE_WHEEL_X) { + mouse_wheel -= event.MouseInput.Wheel; + return true; + } +#endif if (event.MouseInput.Event == EMIE_MOUSE_WHEEL) { mouse_wheel += event.MouseInput.Wheel; } diff --git a/src/guiTable.cpp b/src/guiTable.cpp index 0bf81450..f8df11fd 100644 --- a/src/guiTable.cpp +++ b/src/guiTable.cpp @@ -881,9 +881,19 @@ bool GUITable::OnEvent(const SEvent &event) core::position2d p(event.MouseInput.X, event.MouseInput.Y); if (event.MouseInput.Event == EMIE_MOUSE_WHEEL) { +#if defined(__MACH__) && defined(__APPLE__) && !defined(__IOS__) + // looks awful, works same + float wheel = event.MouseInput.Wheel; + if (wheel > 0.01) wheel = 2; + else if (wheel < -0.01) wheel = -2; + m_scrollbar->setPos(m_scrollbar->getPos() + + (s32) wheel * + - (s32) m_rowheight / 2); +#else m_scrollbar->setPos(m_scrollbar->getPos() + (event.MouseInput.Wheel < 0 ? -3 : 3) * - (s32) m_rowheight / 2); +#endif return true; }