Bug 24313

Summary: hitTest() on a single line input only works through happenstance.
Product: WebKit Reporter: Simon Fraser (smfr) <simon.fraser>
Component: FormsAssignee: Simon Fraser (smfr) <simon.fraser>
Status: RESOLVED FIXED    
Severity: Normal CC: mitz
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Mac   
OS: OS X 10.5   
Bug Depends on:    
Bug Blocks: 24312    
Attachments:
Description Flags
Patch adele: review+

Description Simon Fraser (smfr) 2009-03-02 20:09:20 PST
Hit testing on a RenderTextControlSingleLine seems to work only because of a side-effect of HitTestResult behavior.

What I see happening is this.
RenderLayer::hitTest calls hitTest() on the renderer, which goes into RenderTextControlSingleLine::nodeAtPoint(). This ends up setting the TextControlInnerTextElement as the innerNode() on the result. However, RenderTextControlSingleLine::nodeAtPoint() then returns false!

So we continue to hit test all the way up to the body. The body's layer ends up being the one hit, but we use the node in the result anyway.

This is hurting my karma. See bug 24312.
Comment 1 Simon Fraser (smfr) 2009-03-02 21:46:48 PST
Created attachment 28212 [details]
Patch

I'm pretty sure it was just wrong to test against m_innerBlock, because the superclass could never have set that on the result.
Comment 2 Simon Fraser (smfr) 2009-03-02 22:16:19 PST
http://trac.webkit.org/changeset/41379