mozilla/servo — pull request #944 by larsbergstrom (2013-09-16 21:49:34+00:00)
Title: Fix the case of the invisible iframes

The quadtree was checking to see if a window's position was within the clip region before drawing it. However, the window's position is in page-relative coordinates whereas the clip region is in window-relative coordinates. So, unless the iframe happened to fall in the clip range, it would never have tiles returned.

If an iframe had enough content that it spilled outside of its clip range, different logic was triggered that would cause it to receive a ReRenderMsg anyway, which circumvented all of this.

@eschweic, can you please review this if you have a minute? I believe that I've correctly captured the four checks we want to make (two each for ```x``` and ```y``` directions to determine if the window is in or out, but I'd appreciate another set of eyes on it.

For some example data, in a call to ```get_tile_rects``` for an iframe that is sized to 400x400 and is 428-ish pixels down the page, with a browser frame that is 600 total pixels tall, that function is called with:
window origin geom::point::Point2D{x: 9f32, y: 428.6000061f32}
window size geom::size::Size2D{width: 400f32, height: 171.3999939f32}
self origin geom::point::Point2D{x: 0f32, y: 0f32}
self size 512f32"
clip: size::Size2D{width: 400f32, height: 400f32}