diff options
Diffstat (limited to 'WebCore/rendering/RenderWidget.cpp')
| -rw-r--r-- | WebCore/rendering/RenderWidget.cpp | 31 |
1 files changed, 11 insertions, 20 deletions
diff --git a/WebCore/rendering/RenderWidget.cpp b/WebCore/rendering/RenderWidget.cpp index ec2ee6a..16526ca 100644 --- a/WebCore/rendering/RenderWidget.cpp +++ b/WebCore/rendering/RenderWidget.cpp @@ -73,8 +73,8 @@ void RenderWidget::destroy() if (m_widget) { if (m_frameView) - m_frameView->removeChild(m_widget); - widgetRendererMap().remove(m_widget); + m_frameView->removeChild(m_widget.get()); + widgetRendererMap().remove(m_widget.get()); } // removes from override size map @@ -113,17 +113,17 @@ void RenderWidget::setWidgetGeometry(const IntRect& frame) } } -void RenderWidget::setWidget(Widget* widget) +void RenderWidget::setWidget(PassRefPtr<Widget> widget) { if (widget != m_widget) { if (m_widget) { m_widget->removeFromParent(); - widgetRendererMap().remove(m_widget); + widgetRendererMap().remove(m_widget.get()); clearWidget(); } m_widget = widget; if (m_widget) { - widgetRendererMap().add(m_widget, this); + widgetRendererMap().add(m_widget.get(), this); // if we've already received a layout, apply the calculated space to the // widget immediately, but we have to have really been full constructed (with a non-null // style pointer). @@ -135,7 +135,7 @@ void RenderWidget::setWidget(Widget* widget) else m_widget->show(); } - m_frameView->addChild(m_widget); + m_frameView->addChild(m_widget.get()); } } } @@ -182,8 +182,7 @@ void RenderWidget::paint(PaintInfo& paintInfo, int tx, int ty) paintCustomHighlight(tx - x(), ty - y(), style()->highlight(), true); #endif - bool clipToBorderRadius = style()->overflowX() != OVISIBLE && style()->hasBorderRadius(); - if (clipToBorderRadius) { + if (style()->hasBorderRadius()) { // Push a clip if we have a border radius, since we want to round the foreground content that gets painted. paintInfo.context->save(); @@ -204,13 +203,13 @@ void RenderWidget::paint(PaintInfo& paintInfo, int tx, int ty) // to paint itself. That way it will composite properly with z-indexed layers. m_widget->paint(paintInfo.context, paintInfo.rect); - if (m_widget->isFrameView() && paintInfo.overlapTestRequests && !static_cast<FrameView*>(m_widget)->useSlowRepaints()) { + if (m_widget->isFrameView() && paintInfo.overlapTestRequests && !static_cast<FrameView*>(m_widget.get())->useSlowRepaints()) { ASSERT(!paintInfo.overlapTestRequests->contains(this)); paintInfo.overlapTestRequests->set(this, m_widget->frameRect()); } } - if (clipToBorderRadius) + if (style()->hasBorderRadius()) paintInfo.context->restore(); // Paint a partially transparent wash over selected widgets. @@ -224,7 +223,7 @@ void RenderWidget::setOverlapTestResult(bool isOverlapped) { ASSERT(m_widget); ASSERT(m_widget->isFrameView()); - static_cast<FrameView*>(m_widget)->setIsOverlapped(isOverlapped); + static_cast<FrameView*>(m_widget.get())->setIsOverlapped(isOverlapped); } void RenderWidget::deref(RenderArena *arena) @@ -259,7 +258,7 @@ void RenderWidget::updateWidgetPosition() // if the frame bounds got changed, or if view needs layout (possibly indicating // content size is wrong) we have to do a layout to set the right widget size if (m_widget->isFrameView()) { - FrameView* frameView = static_cast<FrameView*>(m_widget); + FrameView* frameView = static_cast<FrameView*>(m_widget.get()); if (boundsChanged || frameView->needsLayout()) frameView->layout(); } @@ -276,15 +275,7 @@ void RenderWidget::setSelectionState(SelectionState state) void RenderWidget::clearWidget() { - Widget* widget = m_widget; m_widget = 0; - if (widget) - deleteWidget(widget); -} - -void RenderWidget::deleteWidget(Widget* widget) -{ - delete widget; } RenderWidget* RenderWidget::find(const Widget* widget) |
