diff --git a/src/device/mouse.c b/src/device/mouse.c index 0f994ff27..4a3ffaec5 100644 --- a/src/device/mouse.c +++ b/src/device/mouse.c @@ -379,6 +379,18 @@ atomic_double_add(_Atomic double *var, double val) atomic_store(var, temp); } +void +mouse_scale_fx(double x) +{ + atomic_double_add(&mouse_x, ((double) x) * mouse_sensitivity); +} + +void +mouse_scale_fy(double y) +{ + atomic_double_add(&mouse_y, ((double) y) * mouse_sensitivity); +} + void mouse_scale_x(int x) { @@ -391,6 +403,15 @@ mouse_scale_y(int y) atomic_double_add(&mouse_y, ((double) y) * mouse_sensitivity); } +void +mouse_scalef(double x, double y) +{ + pclog("DPI = %lf (%lfx%lf)\n", plat_get_dpi(), monitors[0].mon_res_x, monitors[0].mon_res_y); + + mouse_scale_fx(x); + mouse_scale_fy(y); +} + void mouse_scale(int x, int y) { diff --git a/src/include/86box/mouse.h b/src/include/86box/mouse.h index 5133ddfbc..e24494d74 100644 --- a/src/include/86box/mouse.h +++ b/src/include/86box/mouse.h @@ -85,8 +85,11 @@ extern void mouse_subtract_coords(int *delta_x, int *delta_y, int *o_ extern int mouse_moved(void); extern int mouse_state_changed(void); extern int mouse_mbut_changed(void); +extern void mouse_scale_fx(double x); +extern void mouse_scale_fy(double y); extern void mouse_scale_x(int x); extern void mouse_scale_y(int y); +extern void mouse_scalef(double x, double y); extern void mouse_scale(int x, int y); extern void mouse_set_z(int z); extern void mouse_clear_z(void); diff --git a/src/qt/macos_event_filter.mm b/src/qt/macos_event_filter.mm index 5e276679f..ff4e7c4d2 100644 --- a/src/qt/macos_event_filter.mm +++ b/src/qt/macos_event_filter.mm @@ -33,7 +33,7 @@ CocoaEventFilter::nativeEventFilter(const QByteArray &eventType, void *message, || [event type] == NSEventTypeLeftMouseDragged || [event type] == NSEventTypeRightMouseDragged || [event type] == NSEventTypeOtherMouseDragged) { - mouse_scale([event deltaX], [event deltaY]); + mouse_scalef((double) [event deltaX], (double) [event deltaY]); return true; } if ([event type] == NSEventTypeScrollWheel) {