LayoutRect RenderReplaced::clippedOverflowRectForPaintInvalidation(const RenderLayerModelObject* paintInvalidationContainer, const PaintInvalidationState* paintInvalidationState) const { if (style()->visibility() != VISIBLE && !enclosingLayer()->hasVisibleContent()) return LayoutRect(); // The selectionRect can project outside of the overflowRect, so take their union // for paint invalidation to avoid selection painting glitches. LayoutRect r = isSelected() ? localSelectionRect() : visualOverflowRect(); mapRectToPaintInvalidationBacking(paintInvalidationContainer, r, paintInvalidationState); return r; }
LayoutRect RenderReplaced::selectionRectForPaintInvalidation(const RenderLayerModelObject* paintInvalidationContainer) const { ASSERT(!needsLayout()); if (!isSelected()) return LayoutRect(); LayoutRect rect = localSelectionRect(); mapRectToPaintInvalidationBacking(paintInvalidationContainer, rect, 0); return rect; }
void RenderView::invalidateTreeIfNeeded(const PaintInvalidationState& paintInvalidationState) { ASSERT(!needsLayout()); // We specifically need to issue paint invalidations for the viewRect since other renderers // short-circuit on full-paint invalidation. LayoutRect dirtyRect = viewRect(); if (doingFullPaintInvalidation() && !dirtyRect.isEmpty()) { const RenderLayerModelObject* paintInvalidationContainer = &paintInvalidationState.paintInvalidationContainer(); mapRectToPaintInvalidationBacking(paintInvalidationContainer, dirtyRect, &paintInvalidationState); invalidatePaintUsingContainer(paintInvalidationContainer, dirtyRect, InvalidationFull); } RenderBlock::invalidateTreeIfNeeded(paintInvalidationState); }
LayoutRect RenderReplaced::selectionRectForPaintInvalidation(const RenderLayerModelObject* paintInvalidationContainer) const { ASSERT(!needsLayout()); if (!isSelected()) return LayoutRect(); LayoutRect rect = localSelectionRect(); mapRectToPaintInvalidationBacking(paintInvalidationContainer, rect, 0); // FIXME: groupedMapping() leaks the squashing abstraction. if (paintInvalidationContainer->layer()->groupedMapping()) RenderLayer::mapRectToPaintBackingCoordinates(paintInvalidationContainer, rect); return rect; }
LayoutRect RenderReplaced::selectionRectForPaintInvalidation(const RenderLayerModelObject* paintInvalidationContainer, bool clipToVisibleContent) { ASSERT(!needsLayout()); if (!isSelected()) return LayoutRect(); LayoutRect rect = localSelectionRect(); if (clipToVisibleContent) mapRectToPaintInvalidationBacking(paintInvalidationContainer, rect); else rect = localToContainerQuad(FloatRect(rect), paintInvalidationContainer).enclosingBoundingBox(); return rect; }
void RenderView::mapRectToPaintInvalidationBacking(const RenderLayerModelObject* paintInvalidationContainer, LayoutRect& rect, const PaintInvalidationState* invalidationState) const { mapRectToPaintInvalidationBacking(paintInvalidationContainer, rect, IsNotFixedPosition, invalidationState); }