void RenderSVGResourceContainer::layout() { // Invalidate all resources if our layout changed. if (everHadLayout() && selfNeedsLayout()) removeAllClientsFromCache(); RenderSVGHiddenContainer::layout(); }
void LayoutSVGResourceContainer::invalidateCacheAndMarkForLayout(SubtreeLayoutScope* layoutScope) { if (selfNeedsLayout()) return; setNeedsLayoutAndFullPaintInvalidation(LayoutInvalidationReason::SvgResourceInvalidated, MarkContainerChain, layoutScope); if (everHadLayout()) removeAllClientsFromCache(); }
void RenderSVGResourceContainer::invalidateCacheAndMarkForLayout(SubtreeLayoutScope* layoutScope) { if (selfNeedsLayout()) return; setNeedsLayoutAndFullPaintInvalidation(MarkContainingBlockChain, layoutScope); if (everHadLayout()) removeAllClientsFromCache(); }
void RenderSVGResourceContainer::idChanged() { // Invalidate all our current clients. removeAllClientsFromCache(); // Remove old id, that is guaranteed to be present in cache. svgExtensionsFromElement(element()).removeResource(m_id); m_id = element().getIdAttribute(); registerResource(); }
void RenderSVGResourceMarker::layout() { // Invalidate all resources if our layout changed. if (m_everHadLayout && selfNeedsLayout()) removeAllClientsFromCache(); // RenderSVGHiddenContainer overwrites layout(). We need the // layouting of RenderSVGContainer for calculating local // transformations and repaint. RenderSVGContainer::layout(); }
void RenderSVGResourceContainer::idChanged() { // Invalidate all our current clients. removeAllClientsFromCache(); // Remove old id, that is guaranteed to be present in cache. SVGDocumentExtensions* extensions = svgExtensionsFromNode(node()); extensions->removeResource(m_id); m_id = static_cast<Element*>(node())->getIdAttribute(); registerResource(); }
void LayoutSVGResourceContainer::detachAllClients() { for (auto* client : m_clients) { // Unlink the resource from the client's SVGResources. (The actual // removal will be signaled after processing all the clients.) SVGResources* resources = SVGResourcesCache::cachedResourcesForLayoutObject(client); ASSERT(resources); // Or else the client wouldn't be in the list in the first place. resources->resourceDestroyed(this); // Add a pending resolution based on the id of the old resource. Element* clientElement = toElement(client->node()); svgExtensionsFromElement(clientElement).addPendingResource(m_id, clientElement); } removeAllClientsFromCache(); }
void RenderSVGResourceMarker::layout() { ASSERT(needsLayout()); if (m_isInLayout) return; TemporaryChange<bool> inLayoutChange(m_isInLayout, true); // Invalidate all resources if our layout changed. if (everHadLayout() && selfNeedsLayout()) removeAllClientsFromCache(); // RenderSVGHiddenContainer overwrites layout(). We need the // layouting of RenderSVGContainer for calculating local // transformations and repaint. RenderSVGContainer::layout(); }