void RenderView::paintBoxDecorations(PaintInfo& paintInfo, int tx, int ty) { // Check to see if we are enclosed by a transparent layer. If so, we cannot blit // when scrolling, and we need to use slow repaints. Element* elt; for (elt = document()->ownerElement(); view() && elt && elt->renderer(); elt = elt->document()->ownerElement()) { RenderLayer* layer = elt->renderer()->enclosingLayer(); if (layer->isTransparent() || layer->transparentAncestor()) { frameView()->setUseSlowRepaints(); break; } } if (elt || (firstChild() && firstChild()->style()->visibility() == VISIBLE) || !view()) return; // This code typically only executes if the root element's visibility has been set to hidden. // Only fill with the base background color (typically white) if we're the root document, // since iframes/frames with no background in the child document should show the parent's background. if (view()->isTransparent()) frameView()->setUseSlowRepaints(); // The parent must show behind the child. else { Color baseColor = frameView()->baseBackgroundColor(); if (baseColor.alpha() > 0) { paintInfo.context->save(); paintInfo.context->setCompositeOperation(CompositeCopy); paintInfo.context->fillRect(paintInfo.rect, baseColor); paintInfo.context->restore(); } else paintInfo.context->clearRect(paintInfo.rect); } }
void RenderView::paintBoxDecorations(PaintInfo& i, int _tx, int _ty) { // Check to see if we are enclosed by a transparent layer. If so, we cannot blit // when scrolling, and we need to use slow repaints. Element* elt = element()->document()->ownerElement(); if (view() && elt) { RenderLayer* layer = elt->renderer()->enclosingLayer(); if (layer->isTransparent() || layer->transparentAncestor()) frameView()->useSlowRepaints(); } if ((firstChild() && firstChild()->style()->visibility() == VISIBLE) || !view()) return; // This code typically only executes if the root element's visibility has been set to hidden. // Only fill with white if we're the root document, since iframes/frames with // no background in the child document should show the parent's background. if (elt || view()->isTransparent()) frameView()->useSlowRepaints(); // The parent must show behind the child. else i.p->fillRect(i.r, Color(Color::white)); }