Summary: | REGRESSION (r98361): Events not delivered to elements transformed in certain ways | ||||||
---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Antoine Quint <ml> | ||||
Component: | Layout and Rendering | Assignee: | Shawn Singh <shawnsingh> | ||||
Status: | RESOLVED DUPLICATE | ||||||
Severity: | Normal | CC: | ml, shawnsingh, simon.fraser | ||||
Priority: | P2 | Keywords: | InRadar, Regression | ||||
Version: | 528+ (Nightly build) | ||||||
Hardware: | Unspecified | ||||||
OS: | Unspecified | ||||||
Bug Depends on: | 79136 | ||||||
Bug Blocks: | |||||||
Attachments: |
|
I'm working on a fix for https://bugs.webkit.org/show_bug.cgi?id=79136 Based on Comment #2, I think a fix for 79136 that will also fix this. I'll mark this as a duplicate a few days later after I can verify. This is hit testing in general, not really event handling. The edge-on ".host" element is resulting in a negative w component in TransformationMatrix::projectPoint(), which results in a localPoint of -INT_MAX, -INT_MAX, which causes the hit testing on descendant elements to bail at: if (!clipRect.intersects(hitTestArea)) We need to keep hit-testing descendants even if one edge-on element causes whacky stuff to happen. |
Created attachment 129023 [details] Test case In the attached test case, two elements are laid out with a rotation and a translation along the z-axis. That z-axis translation is the opposite of one applied to a parent container element. While both elements are visible on screen, only the bottom one can receive events. A mousedown or touchstart event (depending on platform) is registered on the window to catch all events and show what the event target is.