case NSScrollWheel :
{
+ float deltaX = 0.0;
+ float deltaY = 0.0;
+
wxevent.SetEventType( wxEVT_MOUSEWHEEL ) ;
+
+ // see http://developer.apple.com/qa/qa2005/qa1453.html
+ // for more details on why we have to look for the exact type
+
+ const EventRef cEvent = (EventRef) [nsEvent eventRef];
+ bool isMouseScrollEvent = false;
+ if ( cEvent )
+ isMouseScrollEvent = ::GetEventKind(cEvent) == kEventMouseScroll;
+
+ if ( isMouseScrollEvent )
+ {
+ deltaX = [nsEvent deviceDeltaX];
+ deltaY = [nsEvent deviceDeltaY];
+ }
+ else
+ {
+ deltaX = ([nsEvent deltaX] * 10);
+ deltaY = ([nsEvent deltaY] * 10);
+ }
+
wxevent.m_wheelDelta = 10;
wxevent.m_linesPerAction = 1;
-
- if ( fabs([nsEvent deviceDeltaX]) > fabs([nsEvent deviceDeltaY]) )
+
+ if ( fabs(deltaX) > fabs(deltaY) )
{
wxevent.m_wheelAxis = 1;
- wxevent.m_wheelRotation = (int)[nsEvent deviceDeltaX];
+ wxevent.m_wheelRotation = (int)deltaX;
}
else
{
- wxevent.m_wheelRotation = (int)[nsEvent deviceDeltaY];
+ wxevent.m_wheelRotation = (int)deltaY;
}
+
}
break ;