Bug 235116

Summary: Summing up all movementX of mousemove events does not give the total difference in position
Product: WebKit Reporter: Guillaume <guillaume.brunerie>
Component: UI EventsAssignee: Nobody <webkit-unassigned>
Status: NEW    
Severity: Normal CC: graouts, thorton, webkit-bug-importer, wenson_hsieh
Priority: P2 Keywords: InRadar
Version: Safari 15   
Hardware: Unspecified   
OS: Unspecified   

Guillaume
Reported 2022-01-12 08:56:41 PST
The specification of the MouseEvent.movementX/Y properties says that > All motion data must be delivered via mousemove events such that between any two mouse events earlierEvent and currentEvent the value of currentEvent.screenX-earlierEvent.screenX is equivalent to the sum of all movementX movementY/code> events after earlierEvent, with the exception of when screenX can not be updated because the pointer is clipped by the user agent screen boundaries. (see https://w3c.github.io/pointerlock/#dom-mouseevent-movementx) It works perfectly fine in Chrome but does not seem to work as expected in Safari, as soon as I move the mouse I get differences of several hundreds of pixels. See the following CodePen: https://codepen.io/Latcarf/pen/YzrRvZE Tested with Safari Version 15.1 (15612.2.9.1.30, 15612), on MacOS Catalina version 10.15.7 (19H1615).
Attachments
Radar WebKit Bug Importer
Comment 1 2022-01-19 08:57:15 PST
Wenson Hsieh
Comment 2 2022-01-21 17:46:58 PST
`WebPageProxy::handleMouseEvent` drops unhandled platform mousemove events on macOS if the mouse event queue is too backed up… Maybe that is what's causing this behavior?
Note You need to log in before you can comment on or make changes to this bug.