Browse Source

OSX mouse wheels in 10.6 - check for device returning NaNs.

tags/2021-05-28
jules 13 years ago
parent
commit
dba5418a53
1 changed files with 9 additions and 3 deletions
  1. +9
    -3
      modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm

+ 9
- 3
modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm View File

@@ -544,6 +544,13 @@ public:
sendMouseEvent (ev);
}
static float checkDeviceDeltaReturnValue (float v) noexcept
{
// (deviceDeltaX can fail and return NaN, so need to sanity-check the result)
v *= 0.5f / 256.0f;
return (v > -1000.0f && v < 1000.0f) ? v : 0.0f;
}
void redirectMouseWheel (NSEvent* ev)
{
updateModifiers (ev);
@@ -575,9 +582,8 @@ public:
#endif
if ([ev respondsToSelector: @selector (deviceDeltaX)])
{
const float scale = 0.5f / 256.0f;
wheel.deltaX = scale * (float) objc_msgSend_fpret (ev, @selector (deviceDeltaX));
wheel.deltaY = scale * (float) objc_msgSend_fpret (ev, @selector (deviceDeltaY));
wheel.deltaX = checkDeviceDeltaReturnValue ((float) objc_msgSend_fpret (ev, @selector (deviceDeltaX)));
wheel.deltaY = checkDeviceDeltaReturnValue ((float) objc_msgSend_fpret (ev, @selector (deviceDeltaY)));
}
}
@catch (...)


Loading…
Cancel
Save