[webkit-reviews] review denied: [Bug 36783] Update of fixed elements is not made correctly when the page has been scrolled : [Attachment 52963] Patch and pixel test

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Fri Apr 9 10:59:00 PDT 2010


Simon Fraser (smfr) <simon.fraser at apple.com> has denied Benjamin Poulain
<benjamin.poulain at nokia.com>'s request for review:
Bug 36783: Update of fixed elements is not made correctly when the page has
been scrolled
https://bugs.webkit.org/show_bug.cgi?id=36783

Attachment 52963: Patch and pixel test
https://bugs.webkit.org/attachment.cgi?id=52963&action=review

------- Additional Comments from Simon Fraser (smfr) <simon.fraser at apple.com>

> +void RenderLayer::updateRepaintRectPosition()
> +{
> +    RenderBox* box = renderBox();
> +    FloatPoint absPos = box->localToAbsolute();
> +    absPos.move(box->borderLeft(), box->borderTop());
> +    m_repaintRect.setLocation(IntPoint(absPos.x(), absPos.y()));
> +}

This isn't correct for fixed inside of transformed elements, and some other
configurations.
It should just be removed in favor of computeRepaintRects().

> +void RenderView::updateFixedElementPositions()
> +{
> +    ListHashSet<RenderBox*>::const_iterator end =
positionedObjects()->end();
> +    for (ListHashSet<RenderBox*>::const_iterator it =
positionedObjects()->begin(); it != end; ++it) {
> +	   RenderBox* renderBox = *it;
> +	   if (renderBox->style()->position() != FixedPosition)
> +	       continue;
> +	   renderBox->layer()->updateRepaintRectPosition();
> +    }
> +}

You also need to hit RenderLayers with a fixed ancestor. It may be better to do
something similar to what updateLayerPositions() does, or add a new flag to
updateLayerPositions() and call that.


More information about the webkit-reviews mailing list