Title: [94117] trunk/Source/WebCore
Revision
94117
Author
[email protected]
Date
2011-08-30 15:33:43 -0700 (Tue, 30 Aug 2011)

Log Message

refactor and cleanup RenderFlexibleBox
https://bugs.webkit.org/show_bug.cgi?id=67165

Reviewed by Ojan Vafai.

No new tests, just refactoring code.

* rendering/RenderFlexibleBox.cpp:
(WebCore::RenderFlexibleBox::layoutHorizontalBlock):
(WebCore::RenderFlexibleBox::runFreeSpaceAllocationAlgorithmHorizontal): Make childSizes a param so we can pass the results to layoutAndPlaceChildrenHorizontal.
(WebCore::hasPackingSpace): Move closer to where it's used.
(WebCore::RenderFlexibleBox::layoutAndPlaceChildrenHorizontal):
    Pull this code out into its own function because it's not part of running the free space allocation algorithm.
* rendering/RenderFlexibleBox.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (94116 => 94117)


--- trunk/Source/WebCore/ChangeLog	2011-08-30 22:12:02 UTC (rev 94116)
+++ trunk/Source/WebCore/ChangeLog	2011-08-30 22:33:43 UTC (rev 94117)
@@ -1,3 +1,20 @@
+2011-08-30  Tony Chang  <[email protected]>
+
+        refactor and cleanup RenderFlexibleBox
+        https://bugs.webkit.org/show_bug.cgi?id=67165
+
+        Reviewed by Ojan Vafai.
+
+        No new tests, just refactoring code.
+
+        * rendering/RenderFlexibleBox.cpp:
+        (WebCore::RenderFlexibleBox::layoutHorizontalBlock):
+        (WebCore::RenderFlexibleBox::runFreeSpaceAllocationAlgorithmHorizontal): Make childSizes a param so we can pass the results to layoutAndPlaceChildrenHorizontal.
+        (WebCore::hasPackingSpace): Move closer to where it's used.
+        (WebCore::RenderFlexibleBox::layoutAndPlaceChildrenHorizontal):
+            Pull this code out into its own function because it's not part of running the free space allocation algorithm.
+        * rendering/RenderFlexibleBox.h:
+
 2011-08-30  Tim Horton  <[email protected]>
 
         getBBox() on a SVGPathElement with curves incorrectly includes control points

Modified: trunk/Source/WebCore/rendering/RenderFlexibleBox.cpp (94116 => 94117)


--- trunk/Source/WebCore/rendering/RenderFlexibleBox.cpp	2011-08-30 22:12:02 UTC (rev 94116)
+++ trunk/Source/WebCore/rendering/RenderFlexibleBox.cpp	2011-08-30 22:33:43 UTC (rev 94117)
@@ -133,11 +133,14 @@
     LayoutUnit availableFreeSpace = contentWidth() - preferredSize;
 
     InflexibleFlexItemSize inflexibleItems;
-    while (!runFreeSpaceAllocationAlgorithmHorizontal(availableFreeSpace, totalPositiveFlexibility, totalNegativeFlexibility, inflexibleItems)) {
+    WTF::Vector<LayoutUnit> childSizes;
+    while (!runFreeSpaceAllocationAlgorithmHorizontal(availableFreeSpace, totalPositiveFlexibility, totalNegativeFlexibility, inflexibleItems, childSizes)) {
         ASSERT(totalPositiveFlexibility >= 0 && totalNegativeFlexibility >= 0);
         ASSERT(inflexibleItems.size() > 0);
     }
 
+    layoutAndPlaceChildrenHorizontal(childSizes, availableFreeSpace, totalPositiveFlexibility);
+
     // FIXME: Handle distribution of vertical space (third distribution round).
 }
 
@@ -180,19 +183,14 @@
     }
 }
 
-static bool hasPackingSpace(LayoutUnit availableFreeSpace, float totalPositiveFlexibility)
-{
-    return availableFreeSpace > 0 && !totalPositiveFlexibility;
-}
-
 // Returns true if we successfully ran the algorithm and sized the flex items.
-bool RenderFlexibleBox::runFreeSpaceAllocationAlgorithmHorizontal(LayoutUnit& availableFreeSpace, float& totalPositiveFlexibility, float& totalNegativeFlexibility, InflexibleFlexItemSize& inflexibleItems)
+bool RenderFlexibleBox::runFreeSpaceAllocationAlgorithmHorizontal(LayoutUnit& availableFreeSpace, float& totalPositiveFlexibility, float& totalNegativeFlexibility, InflexibleFlexItemSize& inflexibleItems, WTF::Vector<LayoutUnit>& childSizes)
 {
     FlexibleBoxIterator iterator(this);
+    childSizes.clear();
 
     // FIXME: Handle vertical writing modes with horizontal flexing.
     LayoutUnit flexboxAvailableLogicalWidth = availableLogicalWidth();
-    WTF::Vector<LayoutUnit> childSizes;
     for (RenderBox* child = iterator.first(); child; child = iterator.next()) {
         LayoutUnit childPreferredSize;
         if (inflexibleItems.contains(child))
@@ -227,7 +225,17 @@
         }
         childSizes.append(childPreferredSize);
     }
+    return true;
+}
 
+static bool hasPackingSpace(LayoutUnit availableFreeSpace, float totalPositiveFlexibility)
+{
+    return availableFreeSpace > 0 && !totalPositiveFlexibility;
+}
+
+void RenderFlexibleBox::layoutAndPlaceChildrenHorizontal(const WTF::Vector<LayoutUnit>& childSizes, LayoutUnit availableFreeSpace, float totalPositiveFlexibility)
+{
+    FlexibleBoxIterator iterator(this);
     // Now that we know the sizes, layout and position the flex items.
     LayoutUnit xOffset = borderLeft() + paddingLeft();
 
@@ -242,8 +250,7 @@
     setHeight(0);
     size_t i = 0;
     for (RenderBox* child = iterator.first(); child; child = iterator.next(), ++i) {
-        LayoutUnit childPreferredSize = childSizes[i];
-        childPreferredSize += child->borderLeft() + child->borderRight() + child->paddingLeft() + child->paddingRight();
+        LayoutUnit childPreferredSize = child->borderLeft() + child->paddingLeft() + childSizes[i] + child->paddingRight() + child->borderRight();
         // FIXME: Handle vertical writing modes with horizontal flexing.
         child->setOverrideSize(LayoutSize(childPreferredSize, 0));
         child->setChildNeedsLayout(true);
@@ -263,7 +270,6 @@
         if (hasPackingSpace(availableFreeSpace, totalPositiveFlexibility) && style()->flexPack() == PackJustify && childSizes.size() > 1)
             xOffset += availableFreeSpace / (childSizes.size() - 1);
     }
-    return true;
 }
 
 }

Modified: trunk/Source/WebCore/rendering/RenderFlexibleBox.h (94116 => 94117)


--- trunk/Source/WebCore/rendering/RenderFlexibleBox.h	2011-08-30 22:12:02 UTC (rev 94116)
+++ trunk/Source/WebCore/rendering/RenderFlexibleBox.h	2011-08-30 22:33:43 UTC (rev 94117)
@@ -55,7 +55,8 @@
     void layoutHorizontalBlock(bool relayoutChildren);
 
     void computePreferredSizeHorizontal(bool relayoutChildren, FlexibleBoxIterator&, LayoutUnit&, float& totalPositiveFlexibility, float& totalNegativeFlexibility);
-    bool runFreeSpaceAllocationAlgorithmHorizontal(LayoutUnit& availableFreeSpace, float& totalPositiveFlexibility, float& totalNegativeFlexibility, InflexibleFlexItemSize&);
+    bool runFreeSpaceAllocationAlgorithmHorizontal(LayoutUnit& availableFreeSpace, float& totalPositiveFlexibility, float& totalNegativeFlexibility, InflexibleFlexItemSize&, WTF::Vector<LayoutUnit>& childSizes);
+    void layoutAndPlaceChildrenHorizontal(const WTF::Vector<LayoutUnit>& childSizes, LayoutUnit availableFreeSpace, float totalPositiveFlexibility);
 };
 
 } // namespace WebCore
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to