[SCM] WebKit Debian packaging branch, webkit-1.2, updated. upstream/1.1.90-6072-g9a69373

mitz at apple.com mitz at apple.com
Wed Apr 7 23:18:53 UTC 2010


The following commit has been merged in the webkit-1.2 branch:
commit c404cdd3d92ff1c58017c93a78ffba426fe7c5fd
Author: mitz at apple.com <mitz at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Nov 3 01:44:22 2009 +0000

    Minor RenderWidget clean-up in preparation for deferring widget tree
    mutation when it is not safe.
    
    Reviewed by Anders Carlsson.
    
    * rendering/RenderWidget.cpp:
    (WebCore::RenderWidget::RenderWidget): Initialize m_refCount to 1
    instead of calling ref().
    (WebCore::RenderWidget::destroy): Call setWidget(0) instead of
    repeating what it does.
    (WebCore::RenderWidget::setWidgetGeometry): Now returns a boolean
    indicating whether the bounds have changed.
    (WebCore::RenderWidget::setWidget): Replaced all-encompassing if
    statement with an early return.
    (WebCore::RenderWidget::updateWidgetPosition): Call setWidgetGeometry().
    * rendering/RenderWidget.h:
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@50435 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 231a2ee..bae6942 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,22 @@
+2009-11-02  Dan Bernstein  <mitz at apple.com>
+
+        Reviewed by Anders Carlsson.
+
+        Minor RenderWidget clean-up in preparation for deferring widget tree
+        mutation when it is not safe.
+
+        * rendering/RenderWidget.cpp:
+        (WebCore::RenderWidget::RenderWidget): Initialize m_refCount to 1
+        instead of calling ref().
+        (WebCore::RenderWidget::destroy): Call setWidget(0) instead of
+        repeating what it does.
+        (WebCore::RenderWidget::setWidgetGeometry): Now returns a boolean
+        indicating whether the bounds have changed.
+        (WebCore::RenderWidget::setWidget): Replaced all-encompassing if
+        statement with an early return.
+        (WebCore::RenderWidget::updateWidgetPosition): Call setWidgetGeometry().
+        * rendering/RenderWidget.h:
+
 2009-11-02  Dumitru Daniliuc  <dumi at chromium.org>
 
         Reviewed by Dimitri Glazkov.
diff --git a/WebCore/rendering/RenderWidget.cpp b/WebCore/rendering/RenderWidget.cpp
index 9af7137..6cdfcea 100644
--- a/WebCore/rendering/RenderWidget.cpp
+++ b/WebCore/rendering/RenderWidget.cpp
@@ -23,8 +23,8 @@
 #include "config.h"
 #include "RenderWidget.h"
 
-#include "AnimationController.h"
 #include "AXObjectCache.h"
+#include "AnimationController.h"
 #include "GraphicsContext.h"
 #include "HitTestResult.h"
 #include "RenderView.h"
@@ -44,14 +44,12 @@ RenderWidget::RenderWidget(Node* node)
     : RenderReplaced(node)
     , m_widget(0)
     , m_frameView(node->document()->view())
-    , m_refCount(0)
-{
-    view()->addWidget(this);
-
     // Reference counting is used to prevent the widget from being
     // destroyed while inside the Widget code, which might not be
     // able to handle that.
-    ref();
+    , m_refCount(1)
+{
+    view()->addWidget(this);
 }
 
 void RenderWidget::destroy()
@@ -81,12 +79,8 @@ void RenderWidget::destroy()
     }
     remove();
 
-    if (m_widget) {
-        if (m_frameView)
-            m_frameView->removeChild(m_widget.get());
-        widgetRendererMap().remove(m_widget.get());
-    }
-    
+    setWidget(0);
+
     // removes from override size map
     if (hasOverrideSize())
         setOverrideSize(-1);
@@ -121,39 +115,42 @@ RenderWidget::~RenderWidget()
     clearWidget();
 }
 
-void RenderWidget::setWidgetGeometry(const IntRect& frame)
+bool RenderWidget::setWidgetGeometry(const IntRect& frame)
 {
-    if (node() && m_widget->frameRect() != frame) {
-        RenderWidgetProtector protector(this);
-        RefPtr<Node> protectedNode(node());
-        m_widget->setFrameRect(frame);
-    }
+    if (!node() || m_widget->frameRect() == frame)
+        return false;
+
+    RenderWidgetProtector protector(this);
+    RefPtr<Node> protectedNode(node());
+    m_widget->setFrameRect(frame);
+    return true;
 }
 
 void RenderWidget::setWidget(PassRefPtr<Widget> widget)
 {
-    if (widget != m_widget) {
-        if (m_widget) {
-            m_widget->removeFromParent();
-            widgetRendererMap().remove(m_widget.get());
-            clearWidget();
-        }
-        m_widget = widget;
-        if (m_widget) {
-            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).
-            if (style()) {
-                if (!needsLayout())
-                    setWidgetGeometry(absoluteContentBox());
-                if (style()->visibility() != VISIBLE)
-                    m_widget->hide();
-                else
-                    m_widget->show();
-            }
-            m_frameView->addChild(m_widget.get());
+    if (widget == m_widget)
+        return;
+
+    if (m_widget) {
+        m_widget->removeFromParent();
+        widgetRendererMap().remove(m_widget.get());
+        clearWidget();
+    }
+    m_widget = widget;
+    if (m_widget) {
+        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 fully constructed (with a non-null
+        // style pointer).
+        if (style()) {
+            if (!needsLayout())
+                setWidgetGeometry(absoluteContentBox());
+            if (style()->visibility() != VISIBLE)
+                m_widget->hide();
+            else
+                m_widget->show();
         }
+        m_frameView->addChild(m_widget.get());
     }
 }
 
@@ -274,15 +271,8 @@ void RenderWidget::updateWidgetPosition()
     int w = width() - borderLeft() - borderRight() - paddingLeft() - paddingRight();
     int h = height() - borderTop() - borderBottom() - paddingTop() - paddingBottom();
 
-    IntRect newBounds(absPos.x(), absPos.y(), w, h);
-    IntRect oldBounds(m_widget->frameRect());
-    bool boundsChanged = newBounds != oldBounds;
-    if (boundsChanged) {
-        RenderWidgetProtector protector(this);
-        RefPtr<Node> protectedNode(node());
-        m_widget->setFrameRect(newBounds);
-    }
-    
+    bool boundsChanged = setWidgetGeometry(IntRect(absPos.x(), absPos.y(), w, h));
+
     // 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()) {
diff --git a/WebCore/rendering/RenderWidget.h b/WebCore/rendering/RenderWidget.h
index 78537fd..5bd59a8 100644
--- a/WebCore/rendering/RenderWidget.h
+++ b/WebCore/rendering/RenderWidget.h
@@ -61,7 +61,7 @@ private:
     virtual bool nodeAtPoint(const HitTestRequest&, HitTestResult&, int x, int y, int tx, int ty, HitTestAction);
     virtual void setOverlapTestResult(bool);
 
-    void setWidgetGeometry(const IntRect&);
+    bool setWidgetGeometry(const IntRect&);
 
     friend class RenderWidgetProtector;
     RenderArena* ref() { ++m_refCount; return renderArena(); }

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list