[webkit-dev] nodeAtPoint is very confusing

David Hyatt hyatt at apple.com
Wed Apr 8 16:08:35 PDT 2009


Yeah this was on my list of things to do, but I stopped my big render  
tree refactoring for the sake of stability.  I think we should hold  
off on more big changes to render tree methods for now.

dave

On Apr 8, 2009, at 5:50 PM, Maciej Stachowiak wrote:

>
> On Apr 8, 2009, at 9:23 AM, Simon Fraser wrote:
>
>> On Apr 8, 2009, at 7:06 AM, Eric Seidel wrote:
>>
>>> Dave, Simon, and other rendering gurus:
>>>
>>> bool RenderObject::nodeAtPoint(const HitTestRequest&, HitTestResult&
>>> result, int _x, int _y, int tx, int ty, HitTestAction hitTestAction)
>>>
>>> _x, _y, tx, ty are very confusing.
>>>
>>> As far as I can tell, _x, _y are relative to the root layer (which  
>>> can
>>> change during hit-testing!) and tx, ty are more of the HTML  
>>> "offset to
>>> your parent" optimization which painting uses.
>>>
>>> Can you explain what the best way to convert from _x, _y to local
>>> coordinates?  And what I should rename _x, _y, and tx, ty to in a
>>> forthcoming "make hit testing readable to normal humans" cleanup
>>> patch?
>>
>> As I understand it, _x and _y are relative to tx, ty, which in turn  
>> is relative
>> to the rootLayer.
>>
>> In general tx and ty, as passed to painting and hit testing  
>> functions, are
>> the offsets that put you in the coordinate space of the parent  
>> renderer,
>> relative to the current rootLayer  being used for painting or hit  
>> testing
>> (which, as you note, gets reset for transforms, and I think should
>> also get reset for HTML/SVG boundaries).  So to get local x and y  
>> for hit testing,
>> you'll see code like:
>>
>> tx += x();
>> ty += y()
>> ...
>> updateHitTestResult(_x - tx, _y - ty)
>>
>> It is all rather confusing, but much of the complexity comes from  
>> having to
>> deal with inlines.
>
> Maybe one thing that would help would be combining (tx, ty) into an  
> IntPoint and (_x, _y) into an IntSize (since it as an offset from  
> the point established by tx, ty). Or vice versa.
>
> Regards,
> Maciej
>
> _______________________________________________
> webkit-dev mailing list
> webkit-dev at lists.webkit.org
> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev



More information about the webkit-dev mailing list