Rémi Bernon (@rbernon) commented about dlls/winewayland.drv/wayland_pointer.c:
+ input.mi.dy = round(frame->dy); + frame->dx -= input.mi.dx; + frame->dy -= input.mi.dy; + if (input.mi.dx != 0 || input.mi.dy != 0) + NtUserSendHardwareInput(hwnd, 0, &input, 0); + } + + input.mi.dwFlags = MOUSEEVENTF_WHEEL; + input.mi.dx = input.mi.dy = 0; + + if (frame->flags & WAYLAND_POINTER_FRAME_WHEEL) + { + input.mi.mouseData = frame->scroll; + if (input.mi.mouseData) + NtUserSendHardwareInput(hwnd, 0, &input, 0); + } I'm also not completely sure to like this change. As far as I can see we most often get a `frame` event after each individual `axis`/`button`/`motion` event, and this merges them all events together, to later only send them separately.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/11117#note_143112