Title: [90668] trunk/Source/WebCore
Revision
90668
Author
[email protected]
Date
2011-07-08 15:15:14 -0700 (Fri, 08 Jul 2011)

Log Message

Refactor override size to be a size rather than just an int
https://bugs.webkit.org/show_bug.cgi?id=64195

Reviewed by David Hyatt.

Also convert to LayoutSize and LayoutUnit.

Covered by existing tests.

* rendering/RenderBox.cpp:
(WebCore::RenderBox::overrideSize): Pass in a LayoutSize.
(WebCore::RenderBox::setOverrideSize):
(WebCore::RenderBox::clearOverrideSize): New method for clearing the
    override size (previous we would pass in -1)
(WebCore::RenderBox::overrideWidth):
(WebCore::RenderBox::overrideHeight):
(WebCore::RenderBox::computeLogicalWidth):
(WebCore::RenderBox::computeLogicalHeight):
(WebCore::RenderBox::computePercentageLogicalHeight):
(WebCore::RenderBox::availableLogicalHeightUsing):
* rendering/RenderBox.h:
* rendering/RenderDeprecatedFlexibleBox.cpp:
(WebCore::gatherFlexChildrenInfo):
(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):
(WebCore::RenderDeprecatedFlexibleBox::applyLineClamp):
* rendering/RenderTableCell.cpp:
(WebCore::RenderTableCell::setOverrideSizeFromRowHeight):
* rendering/RenderTableCell.h: Remove setOverrideSize since it was
    only called in one place to clear the override size.  Inline this
    logic instead.
* rendering/RenderTableSection.cpp:
(WebCore::RenderTableSection::calcRowLogicalHeight):
* rendering/RenderWidget.cpp:
(WebCore::RenderWidget::destroy):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (90667 => 90668)


--- trunk/Source/WebCore/ChangeLog	2011-07-08 22:01:17 UTC (rev 90667)
+++ trunk/Source/WebCore/ChangeLog	2011-07-08 22:15:14 UTC (rev 90668)
@@ -1,3 +1,41 @@
+2011-07-08  Tony Chang  <[email protected]>
+
+        Refactor override size to be a size rather than just an int
+        https://bugs.webkit.org/show_bug.cgi?id=64195
+
+        Reviewed by David Hyatt.
+
+        Also convert to LayoutSize and LayoutUnit.
+
+        Covered by existing tests.
+
+        * rendering/RenderBox.cpp:
+        (WebCore::RenderBox::overrideSize): Pass in a LayoutSize.
+        (WebCore::RenderBox::setOverrideSize):
+        (WebCore::RenderBox::clearOverrideSize): New method for clearing the
+            override size (previous we would pass in -1)
+        (WebCore::RenderBox::overrideWidth):
+        (WebCore::RenderBox::overrideHeight):
+        (WebCore::RenderBox::computeLogicalWidth):
+        (WebCore::RenderBox::computeLogicalHeight):
+        (WebCore::RenderBox::computePercentageLogicalHeight):
+        (WebCore::RenderBox::availableLogicalHeightUsing):
+        * rendering/RenderBox.h:
+        * rendering/RenderDeprecatedFlexibleBox.cpp:
+        (WebCore::gatherFlexChildrenInfo):
+        (WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
+        (WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):
+        (WebCore::RenderDeprecatedFlexibleBox::applyLineClamp):
+        * rendering/RenderTableCell.cpp:
+        (WebCore::RenderTableCell::setOverrideSizeFromRowHeight):
+        * rendering/RenderTableCell.h: Remove setOverrideSize since it was
+            only called in one place to clear the override size.  Inline this
+            logic instead.
+        * rendering/RenderTableSection.cpp:
+        (WebCore::RenderTableSection::calcRowLogicalHeight):
+        * rendering/RenderWidget.cpp:
+        (WebCore::RenderWidget::destroy):
+
 2011-07-08  Emil A Eklund  <[email protected]>
 
         Switch pointInContainer and accumulatedOffset to to new layout types

Modified: trunk/Source/WebCore/rendering/RenderBox.cpp (90667 => 90668)


--- trunk/Source/WebCore/rendering/RenderBox.cpp	2011-07-08 22:01:17 UTC (rev 90667)
+++ trunk/Source/WebCore/rendering/RenderBox.cpp	2011-07-08 22:15:14 UTC (rev 90668)
@@ -58,8 +58,8 @@
 
 using namespace HTMLNames;
 
-// Used by flexible boxes when flexing this element.
-typedef WTF::HashMap<const RenderBox*, int> OverrideSizeMap;
+// Used by flexible boxes when flexing this element and by table cells.
+typedef WTF::HashMap<const RenderBox*, LayoutSize> OverrideSizeMap;
 static OverrideSizeMap* gOverrideSizeMap = 0;
 
 bool RenderBox::s_hadOverflowClip = false;
@@ -686,38 +686,39 @@
     return m_maxPreferredLogicalWidth;
 }
 
-int RenderBox::overrideSize() const
+LayoutSize RenderBox::overrideSize() const
 {
     if (!hasOverrideSize())
-        return -1;
+        return LayoutSize(-1, -1);
     return gOverrideSizeMap->get(this);
 }
 
-void RenderBox::setOverrideSize(int s)
+void RenderBox::setOverrideSize(const LayoutSize& size)
 {
-    if (s == -1) {
-        if (hasOverrideSize()) {
-            setHasOverrideSize(false);
-            gOverrideSizeMap->remove(this);
-        }
-    } else {
-        if (!gOverrideSizeMap)
-            gOverrideSizeMap = new OverrideSizeMap();
-        setHasOverrideSize(true);
-        gOverrideSizeMap->set(this, s);
-    }
+    if (!gOverrideSizeMap)
+        gOverrideSizeMap = new OverrideSizeMap();
+    setHasOverrideSize(true);
+    gOverrideSizeMap->set(this, size);
 }
 
-int RenderBox::overrideWidth() const
+void RenderBox::clearOverrideSize()
 {
-    return hasOverrideSize() ? overrideSize() : width();
+    if (!hasOverrideSize())
+        return;
+    setHasOverrideSize(false);
+    gOverrideSizeMap->remove(this);
 }
 
-int RenderBox::overrideHeight() const
+LayoutUnit RenderBox::overrideWidth() const
 {
-    return hasOverrideSize() ? overrideSize() : height();
+    return hasOverrideSize() ? overrideSize().width() : width();
 }
 
+LayoutUnit RenderBox::overrideHeight() const
+{
+    return hasOverrideSize() ? overrideSize().height() : height();
+}
+
 LayoutUnit RenderBox::computeBorderBoxLogicalWidth(LayoutUnit width) const
 {
     LayoutUnit bordersPlusPadding = borderAndPaddingLogicalWidth();
@@ -1554,7 +1555,7 @@
     // https://bugs.webkit.org/show_bug.cgi?id=46418
     if (hasOverrideSize() &&  parent()->style()->boxOrient() == HORIZONTAL
             && parent()->isFlexibleBox() && parent()->isFlexingChildren()) {
-        setLogicalWidth(overrideSize());
+        setLogicalWidth(overrideWidth());
         return;
     }
 
@@ -1768,7 +1769,7 @@
         // https://bugs.webkit.org/show_bug.cgi?id=46418
         if (hasOverrideSize() && parent()->isFlexibleBox() && parent()->style()->boxOrient() == VERTICAL
                 && parent()->isFlexingChildren())
-            h = Length(overrideSize() - borderAndPaddingLogicalHeight(), Fixed);
+            h = Length(overrideHeight() - borderAndPaddingLogicalHeight(), Fixed);
         else if (treatAsReplaced)
             h = Length(computeReplacedLogicalHeight(), Fixed);
         else {
@@ -1886,8 +1887,7 @@
     // be a percentage of the cell's current content height.
     if (cb->isTableCell()) {
         if (!skippedAutoHeightContainingBlock) {
-            result = cb->overrideSize();
-            if (result == -1) {
+            if (!cb->hasOverrideSize()) {
                 // Normally we would let the cell size intrinsically, but scrolling overflow has to be
                 // treated differently, since WinIE lets scrolled overflow regions shrink as needed.
                 // While we can't get all cases right, we can at least detect when the cell has a specified
@@ -1900,6 +1900,7 @@
                     return 0;
                 return -1;
             }
+            result = cb->overrideHeight();
             includeBorderPadding = true;
         }
     }
@@ -2052,7 +2053,7 @@
     // artificially.  We're going to rely on this cell getting expanded to some new
     // height, and then when we lay out again we'll use the calculation below.
     if (isTableCell() && (h.isAuto() || h.isPercent()))
-        return overrideSize() - borderAndPaddingLogicalWidth();
+        return overrideHeight() - borderAndPaddingLogicalWidth();
 
     if (h.isPercent())
        return computeContentBoxLogicalHeight(h.calcValue(containingBlock()->availableLogicalHeight()));

Modified: trunk/Source/WebCore/rendering/RenderBox.h (90667 => 90668)


--- trunk/Source/WebCore/rendering/RenderBox.h	2011-07-08 22:01:17 UTC (rev 90667)
+++ trunk/Source/WebCore/rendering/RenderBox.h	2011-07-08 22:15:14 UTC (rev 90668)
@@ -244,10 +244,11 @@
     virtual int minPreferredLogicalWidth() const;
     virtual int maxPreferredLogicalWidth() const;
 
-    int overrideSize() const;
-    int overrideWidth() const;
-    int overrideHeight() const;
-    virtual void setOverrideSize(int);
+    LayoutSize overrideSize() const;
+    LayoutUnit overrideWidth() const;
+    LayoutUnit overrideHeight() const;
+    void setOverrideSize(const LayoutSize&);
+    void clearOverrideSize();
 
     virtual LayoutSize offsetFromContainer(RenderObject*, const LayoutPoint&) const;
     

Modified: trunk/Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp (90667 => 90668)


--- trunk/Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp	2011-07-08 22:01:17 UTC (rev 90667)
+++ trunk/Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp	2011-07-08 22:15:14 UTC (rev 90668)
@@ -293,7 +293,7 @@
         if (!child->isPositioned() && child->style()->boxFlex() > 0.0f) {
             // We always have to lay out flexible objects again, since the flex distribution
             // may have changed, and we need to reallocate space.
-            child->setOverrideSize(-1);
+            child->clearOverrideSize();
             if (!relayoutChildren)
                 child->setChildNeedsLayout(true, false);
             haveFlex = true;
@@ -496,7 +496,7 @@
                         if (allowedChildFlex(child, expanding, i)) {
                             int spaceAdd = (int)(spaceAvailableThisPass * (child->style()->boxFlex()/totalFlex));
                             if (spaceAdd) {
-                                child->setOverrideSize(child->overrideWidth() + spaceAdd);
+                                child->setOverrideSize(LayoutSize(child->overrideWidth() + spaceAdd, 0));
                                 m_flexingChildren = true;
                                 relayoutChildren = true;
                             }
@@ -513,7 +513,7 @@
                         int spaceAdd = groupRemainingSpace > 0 ? 1 : -1;
                         for (RenderBox* child = iterator.first(); child && groupRemainingSpace; child = iterator.next()) {
                             if (allowedChildFlex(child, expanding, i)) {
-                                child->setOverrideSize(child->overrideWidth() + spaceAdd);
+                                child->setOverrideSize(LayoutSize(child->overrideWidth() + spaceAdd, 0));
                                 m_flexingChildren = true;
                                 relayoutChildren = true;
                                 remainingSpace -= spaceAdd;
@@ -742,7 +742,7 @@
                         if (allowedChildFlex(child, expanding, i)) {
                             int spaceAdd = (int)(spaceAvailableThisPass * (child->style()->boxFlex()/totalFlex));
                             if (spaceAdd) {
-                                child->setOverrideSize(child->overrideHeight() + spaceAdd);
+                                child->setOverrideSize(LayoutSize(0, child->overrideHeight() + spaceAdd));
                                 m_flexingChildren = true;
                                 relayoutChildren = true;
                             }
@@ -759,7 +759,7 @@
                         int spaceAdd = groupRemainingSpace > 0 ? 1 : -1;
                         for (RenderBox* child = iterator.first(); child && groupRemainingSpace; child = iterator.next()) {
                             if (allowedChildFlex(child, expanding, i)) {
-                                child->setOverrideSize(child->overrideHeight() + spaceAdd);
+                                child->setOverrideSize(LayoutSize(0, child->overrideHeight() + spaceAdd));
                                 m_flexingChildren = true;
                                 relayoutChildren = true;
                                 remainingSpace -= spaceAdd;
@@ -873,11 +873,11 @@
             continue;
 
         child->setChildNeedsLayout(true, false);
-        child->setOverrideSize(newHeight);
+        child->setOverrideSize(LayoutSize(0, newHeight));
         m_flexingChildren = true;
         child->layoutIfNeeded();
         m_flexingChildren = false;
-        child->setOverrideSize(-1);
+        child->clearOverrideSize();
 
         // FIXME: For now don't support RTL.
         if (style()->direction() != LTR)

Modified: trunk/Source/WebCore/rendering/RenderTableCell.cpp (90667 => 90668)


--- trunk/Source/WebCore/rendering/RenderTableCell.cpp	2011-07-08 22:01:17 UTC (rev 90667)
+++ trunk/Source/WebCore/rendering/RenderTableCell.cpp	2011-07-08 22:15:14 UTC (rev 90668)
@@ -212,16 +212,10 @@
     return result + intrinsicPaddingAfter();
 }
 
-void RenderTableCell::setOverrideSize(int size)
-{
-    clearIntrinsicPadding();
-    RenderBlock::setOverrideSize(size);
-}
-    
 void RenderTableCell::setOverrideSizeFromRowHeight(int rowHeight)
 {
     clearIntrinsicPadding();
-    RenderBlock::setOverrideSize(max(0, rowHeight - borderBefore() - paddingBefore() - borderAfter() - paddingAfter()));
+    RenderBlock::setOverrideSize(LayoutSize(0, max(0, rowHeight - borderBefore() - paddingBefore() - borderAfter() - paddingAfter())));
 }
 
 LayoutSize RenderTableCell::offsetFromContainer(RenderObject* o, const LayoutPoint& point) const

Modified: trunk/Source/WebCore/rendering/RenderTableCell.h (90667 => 90668)


--- trunk/Source/WebCore/rendering/RenderTableCell.h	2011-07-08 22:01:17 UTC (rev 90667)
+++ trunk/Source/WebCore/rendering/RenderTableCell.h	2011-07-08 22:15:14 UTC (rev 90668)
@@ -119,7 +119,6 @@
     virtual int paddingBefore(bool includeIntrinsicPadding = true) const;
     virtual int paddingAfter(bool includeIntrinsicPadding = true) const;
 
-    virtual void setOverrideSize(int);
     void setOverrideSizeFromRowHeight(int);
 
     bool hasVisualOverflow() const { return m_overflow && !borderBoxRect().contains(m_overflow->visualOverflowRect()); }

Modified: trunk/Source/WebCore/rendering/RenderTableSection.cpp (90667 => 90668)


--- trunk/Source/WebCore/rendering/RenderTableSection.cpp	2011-07-08 22:01:17 UTC (rev 90667)
+++ trunk/Source/WebCore/rendering/RenderTableSection.cpp	2011-07-08 22:15:14 UTC (rev 90668)
@@ -335,13 +335,14 @@
 
             int indx = max(r - cell->rowSpan() + 1, 0);
 
-            if (cell->overrideSize() != -1) {
+            if (cell->hasOverrideSize()) {
                 if (!statePusher.didPush()) {
                     // Technically, we should also push state for the row, but since
                     // rows don't push a coordinate transform, that's not necessary.
                     statePusher.push(this, IntSize(x(), y()));
                 }
-                cell->setOverrideSize(-1);
+                cell->clearIntrinsicPadding();
+                cell->clearOverrideSize();
                 cell->setChildNeedsLayout(true, false);
                 cell->layoutIfNeeded();
             }

Modified: trunk/Source/WebCore/rendering/RenderWidget.cpp (90667 => 90668)


--- trunk/Source/WebCore/rendering/RenderWidget.cpp	2011-07-08 22:01:17 UTC (rev 90667)
+++ trunk/Source/WebCore/rendering/RenderWidget.cpp	2011-07-08 22:15:14 UTC (rev 90668)
@@ -139,7 +139,7 @@
 
     // removes from override size map
     if (hasOverrideSize())
-        setOverrideSize(-1);
+        clearOverrideSize();
 
     if (style() && (style()->logicalHeight().isPercent() || style()->logicalMinHeight().isPercent() || style()->logicalMaxHeight().isPercent()))
         RenderBlock::removePercentHeightDescendant(this);
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to