On May 20, 2010, at 3:47 PM, Peter Kasting wrote:

> On Thu, May 20, 2010 at 1:38 PM, David Hyatt <[email protected]> wrote:
> This is all coming back to me now.
> 
> When two cells occupy the same position in the grid, only one of them gets 
> stored at that position.  The current code puts the first cell encountered 
> into the grid. This means if you ask what cell is present in row 3 and column 
> 2 of the above example, you'll get back cell #5.
> 
> This actually makes the grid unsuitable for hit testing and is why I hadn't 
> converted nodeAtPoint over to use the grid yet.
> 
> The grid needs to be fixed so that it records all of the cells present at a 
> given position.  If it did that, then you could binary search as long as 
> there are no overflowing cells, since you'd then be able to see all the cells 
> that actually occupy a given grid position.
> 
> The paint method uses the grid and actually has a repaint bug, since if you 
> make the repaint rect tight enough, it won't think it has to paint the second 
> and subsequent cells that occupy a given grid position.
> 
> It sounds like your recommended steps are:
> * First fix the grid to record all the cells at a given position.  This fixes 
> a repaint bug.

Right.  The painting code would have to be patched to look at all the cells at 
that position and not just the first one obviously.

> * Then change the hit-testing to work just like painting.  This makes hit 
> testing more efficient and ensures hit testing and painting agree.

Correct.

> * Then optimize hit-testing to binary-search if there are no overflowing 
> cells.  (And optimize painting similarly?  I dunno what that would mean, 
> though--just going off the "optimize together" comment earlier.)
> 

Yes, optimize painting similarly.  You should be able to binary search your way 
through the row grid to find the first one that intersects the dirty rect.

> Is this a good summary?


Yup! 
_______________________________________________
webkit-dev mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

Reply via email to