Bug 79664

Summary: REGRESSION (r98361): Events not delivered to elements transformed in certain ways
Product: WebKit Reporter: Antoine Quint <ml>
Component: Layout and RenderingAssignee: 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:
Description Flags
Test case none

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 1 Antoine Quint 2012-02-27 06:13:49 PST
<rdar://problem/10937079>
Comment 2 Simon Fraser (smfr) 2012-02-27 09:36:10 PST
Broken by http://trac.webkit.org/changeset/98361/trunk
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.
Comment 6 Shawn Singh 2012-05-02 10:36:48 PDT

*** This bug has been marked as a duplicate of bug 79136 ***