Bug 34344

Summary: Adding overflow:hidden to TD elements makes hit testing much slower
Product: WebKit Reporter: James Robinson <jamesr>
Component: WebCore Misc.Assignee: Nobody <webkit-unassigned>
Status: NEW    
Severity: Normal CC: hyatt, simon.fraser, tonikitoo
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: All   
OS: All   
Attachments:
Description Flags
Test page using elementFromPoint none

James Robinson
Reported 2010-01-29 13:54:19 PST
Created attachment 47733 [details] Test page using elementFromPoint Setting overflow:hidden on <td> elements inside a large table increases the amount of time needed to hit test points within the table. This is just a special case of https://bugs.webkit.org/show_bug.cgi?id=33520 - setting overflow:hidden gives each <td> its own RenderLayer, so hit testing within the element causes a lot of very slow coordinate maps. The other issue is that currently when hit testing inside a table we iterate through every child cell instead of taking advantage of rows to restrict the search. This shows up as a 30-50ms delay on an internal app with a large table embedded at a moderate depth inside the DOM (roughly 10 RenderLayers from the document root).
Attachments
Test page using elementFromPoint (1.45 KB, text/html)
2010-01-29 13:54 PST, James Robinson
no flags
James Robinson
Comment 1 2010-02-05 16:19:50 PST
overflow:hidden causes each TD to get its own layer. The patch in https://bugs.webkit.org/show_bug.cgi?id=33520 speeds hit testing up
James Robinson
Comment 2 2010-02-05 16:20:55 PST
Pah, bugzilla was a bit overeager. What I meant was: overflow:hidden causes each TD to get its own RenderLayer. The patch in https://bugs.webkit.org/show_bug.cgi?id=33520 speeds this test up by about 33%.
Note You need to log in before you can comment on or make changes to this bug.