Bug 7701

Summary: mouseout sent to the wrong element when layout changes simultaneously
Product: WebKit Reporter: Jacob Lukas <jlukas>
Component: Layout and RenderingAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: ap, mitz
Priority: P3    
Version: 420+   
Hardware: Mac   
OS: OS X 10.4   
Attachments:
Description Flags
Reduced test case none

Jacob Lukas
Reported 2006-03-10 11:16:06 PST
Using Javascript onmouseover/onmouseout and CSS :hover at the same time sometimes results in onmouseout not working.
Attachments
Reduced test case (1.37 KB, text/html)
2006-03-10 11:16 PST, Jacob Lukas
no flags
Jacob Lukas
Comment 1 2006-03-10 11:16:52 PST
Created attachment 6989 [details] Reduced test case
Geoffrey Garen
Comment 2 2006-03-10 11:34:05 PST
That's a great test case. Step 3 should read: "Mouse right until the cursor is below Three but still over two, then mouse up. Two should disappear, but doesn't."
mitz
Comment 3 2006-03-10 12:49:40 PST
This test case is a great example of what the comment in FrameView::dispatchMouseEvent() says about not caching the old mouse-over node. In this case, as the mouse enters "Three", the code tries to calculate which node the mouse was previously in, but while doing this, first of all it updates the document's layout applying to the already-updated hover states. According to the new layout, the previous mouse position was in "Four", so "Three Four" is sent a bogus mouse out event, and "One Two" never gets one.
Jacob Lukas
Comment 4 2006-03-10 14:17:11 PST
note that this test case works correctly if either the css or javascript hover is removed. only the combination of them brings out this bug.
Alexey Proskuryakov
Comment 5 2006-03-20 12:47:09 PST
Fixed, patch in bug 3439
Note You need to log in before you can comment on or make changes to this bug.