From a533f0504f8067182cad0c26cbba7074248c8c37 Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Wed, 3 Feb 2010 08:32:42 +0000 Subject: [PATCH] safe degradation git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63370 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/osx/cocoa/window.mm | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/osx/cocoa/window.mm b/src/osx/cocoa/window.mm index eef2cdf994..83a5e7f79a 100644 --- a/src/osx/cocoa/window.mm +++ b/src/osx/cocoa/window.mm @@ -516,19 +516,43 @@ void wxWidgetCocoaImpl::SetupMouseEvent( wxMouseEvent &wxevent , NSEvent * nsEve 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 ; -- 2.45.2