void RenderWidget::destroy() { // We can't call the base class's destroy because we don't // want to unconditionally delete ourselves (we're ref-counted). // So the code below includes copied and pasted contents of // both RenderBox::destroy() and RenderObject::destroy(). // Fix originally made for <rdar://problem/4228818>. animation()->cancelAnimations(this); if (RenderView* v = view()) v->removeWidget(this); if (AXObjectCache::accessibilityEnabled()) { document()->axObjectCache()->childrenChanged(this->parent()); document()->axObjectCache()->remove(this); } remove(); if (m_widget) { if (m_view) m_view->removeChild(m_widget); widgetRendererMap().remove(m_widget); } // removes from override size map if (hasOverrideSize()) setOverrideSize(-1); RenderArena* arena = renderArena(); if (hasLayer()) layer()->clearClipRects(); if (style() && (style()->height().isPercent() || style()->minHeight().isPercent() || style()->maxHeight().isPercent())) RenderBlock::removePercentHeightDescendant(this); setNode(0); if (hasLayer()) layer()->destroy(arena); deref(arena); }
void RenderWidget::destroy() { // We can't call the base class's destroy because we don't // want to unconditionally delete ourselves (we're ref-counted). // So the code below includes copied and pasted contents of // both RenderBox::destroy() and RenderObject::destroy(). // Fix originally made for <rdar://problem/4228818>. animation()->cancelImplicitAnimations(this); if (RenderView* v = view()) v->removeWidget(this); if (AXObjectCache::accessibilityEnabled()) document()->axObjectCache()->remove(this); remove(); if (m_widget) { if (m_view) m_view->removeChild(m_widget); widgetRendererMap().remove(m_widget); } // removes from override size map if (hasOverrideSize()) setOverrideSize(-1); RenderLayer* layer = m_layer; RenderArena* arena = renderArena(); if (layer) layer->clearClipRect(); setNode(0); deref(arena); if (layer) layer->destroy(arena); }