Fix for mac mousewheel.

This commit is contained in:
Keith Johnston 2020-10-06 16:11:36 -07:00
parent 63ef97a2b3
commit 87a4a8484e

View File

@ -416,15 +416,16 @@ DWORD WINAPI mac_client_thread(void *param)
if (fabsf(dy) > FLT_EPSILON)
{
flags = PTR_FLAGS_HWHEEL;
flags = PTR_FLAGS_WHEEL;
units = fabsf(dy) * 120;
if (dy < 0)
flags |= PTR_FLAGS_WHEEL_NEGATIVE;
}
else if (fabsf(dx) > FLT_EPSILON)
{
flags = PTR_FLAGS_WHEEL;
flags = PTR_FLAGS_HWHEEL;
units = fabsf(dx) * 120;
if (dx > 0)
@ -433,17 +434,20 @@ DWORD WINAPI mac_client_thread(void *param)
else
return;
/* send out all accumulated rotations */
if (units > WheelRotationMask)
units = WheelRotationMask;
/* Wheel rotation steps:
*
* positive: 0 ... 0xFF -> slow ... fast
* negative: 0 ... 0xFF -> fast ... slow
*/
UINT16 step = units;
if (step > 0xFF)
step = 0xFF;
while (units != 0)
{
/* limit to maximum value in WheelRotationMask (9bit signed value) */
const UINT16 step = units & WheelRotationMask;
mf_scale_mouse_event(context, instance->input, flags | step, 0, 0);
units -= step;
}
/* Negative rotation, so count down steps from top */
if (flags & PTR_FLAGS_WHEEL_NEGATIVE)
step = 0xFF - step;
mf_scale_mouse_event(context, instance->input, flags | step, 0, 0);
}
- (void)mouseDragged:(NSEvent *)event