|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>|
|Severity:||Normal||CC:||ml, shawnsingh, simon.fraser|
|Version:||528+ (Nightly build)|
|Bug Depends on:||79136|
Description Antoine Quint 2012-02-27 06:04:20 PST
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.
Comment 2 Simon Fraser (smfr) 2012-02-27 09:36:10 PST
Comment 3 Shawn Singh 2012-02-27 09:50:23 PST
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.
Comment 4 Simon Fraser (smfr) 2012-02-27 10:50:31 PST
This is hit testing in general, not really event handling.
Comment 5 Simon Fraser (smfr) 2012-02-27 15:31:36 PST
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.