Changeset 107446 in webkit
- Timestamp:
- Feb 10, 2012 3:01:40 PM (12 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r107444 r107446 1 2012-02-10 Ojan Vafai <ojan@chromium.org> 2 3 flex-pack:center and flex-item-align:center should do true centering 4 https://bugs.webkit.org/show_bug.cgi?id=77385 5 6 Reviewed by Tony Chang. 7 8 * css3/flexbox/true-centering-expected.txt: Added. 9 * css3/flexbox/true-centering.html: Added. 10 1 11 2012-02-10 Tony Chang <tony@chromium.org> 2 12 -
trunk/Source/WebCore/ChangeLog
r107445 r107446 1 2012-02-10 Ojan Vafai <ojan@chromium.org> 2 3 flex-pack:center and flex-item-align:center should do true centering 4 https://bugs.webkit.org/show_bug.cgi?id=77385 5 6 Reviewed by Tony Chang. 7 8 Also, removed passing totalPositiveFlexibility around. We don't 9 need to know about positive/negative flex once we run the flexing algorithm. 10 We used to need to know this in order to flex margins, but margins can 11 no longer be flexed. 12 13 Test: css3/flexbox/true-centering.html 14 15 * rendering/RenderFlexibleBox.cpp: 16 (WebCore::RenderFlexibleBox::layoutFlexItems): 17 (WebCore::initialPackingOffset): 18 (WebCore::packingSpaceBetweenChildren): 19 (WebCore::RenderFlexibleBox::layoutAndPlaceChildren): 20 (WebCore::RenderFlexibleBox::layoutColumnReverse): 21 * rendering/RenderFlexibleBox.h: 22 (RenderFlexibleBox): 23 1 24 2012-02-10 Mark Hahnenberg <mhahnenberg@apple.com> 2 25 -
trunk/Source/WebCore/rendering/RenderFlexibleBox.cpp
r107317 r107446 442 442 } 443 443 444 layoutAndPlaceChildren(orderedChildren, childSizes, availableFreeSpace , totalPositiveFlexibility);444 layoutAndPlaceChildren(orderedChildren, childSizes, availableFreeSpace); 445 445 } 446 446 … … 572 572 } 573 573 574 static bool hasPackingSpace(LayoutUnit availableFreeSpace, float totalPositiveFlexibility) 575 { 576 return availableFreeSpace > 0 && !totalPositiveFlexibility; 577 } 578 579 static LayoutUnit initialPackingOffset(LayoutUnit availableFreeSpace, float totalPositiveFlexibility, EFlexPack flexPack, size_t numberOfChildren) 580 { 581 if (hasPackingSpace(availableFreeSpace, totalPositiveFlexibility)) { 574 static LayoutUnit initialPackingOffset(LayoutUnit availableFreeSpace, EFlexPack flexPack, size_t numberOfChildren) 575 { 576 if (availableFreeSpace > 0) { 582 577 if (flexPack == PackEnd) 583 578 return availableFreeSpace; … … 586 581 if (flexPack == PackDistribute && numberOfChildren) 587 582 return availableFreeSpace / (2 * numberOfChildren); 583 } else if (availableFreeSpace < 0) { 584 if (flexPack == PackCenter || flexPack == PackDistribute) 585 return availableFreeSpace / 2; 588 586 } 589 587 return 0; 590 588 } 591 589 592 static LayoutUnit packingSpaceBetweenChildren(LayoutUnit availableFreeSpace, float totalPositiveFlexibility,EFlexPack flexPack, size_t numberOfChildren)593 { 594 if ( hasPackingSpace(availableFreeSpace, totalPositiveFlexibility)&& numberOfChildren > 1) {590 static LayoutUnit packingSpaceBetweenChildren(LayoutUnit availableFreeSpace, EFlexPack flexPack, size_t numberOfChildren) 591 { 592 if (availableFreeSpace > 0 && numberOfChildren > 1) { 595 593 if (flexPack == PackJustify) 596 594 return availableFreeSpace / (numberOfChildren - 1); … … 636 634 } 637 635 638 void RenderFlexibleBox::layoutAndPlaceChildren(const OrderedFlexItemList& children, const WTF::Vector<LayoutUnit>& childSizes, LayoutUnit availableFreeSpace , float totalPositiveFlexibility)636 void RenderFlexibleBox::layoutAndPlaceChildren(const OrderedFlexItemList& children, const WTF::Vector<LayoutUnit>& childSizes, LayoutUnit availableFreeSpace) 639 637 { 640 638 LayoutUnit mainAxisOffset = flowAwareBorderStart() + flowAwarePaddingStart(); 641 mainAxisOffset += initialPackingOffset(availableFreeSpace, totalPositiveFlexibility,style()->flexPack(), childSizes.size());639 mainAxisOffset += initialPackingOffset(availableFreeSpace, style()->flexPack(), childSizes.size()); 642 640 if (style()->flexDirection() == FlowRowReverse) 643 641 mainAxisOffset += isHorizontalFlow() ? verticalScrollbarWidth() : horizontalScrollbarHeight(); … … 651 649 if (child->isPositioned()) { 652 650 prepareChildForPositionedLayout(child, mainAxisOffset, crossAxisOffset); 653 mainAxisOffset += packingSpaceBetweenChildren(availableFreeSpace, totalPositiveFlexibility,style()->flexPack(), childSizes.size());651 mainAxisOffset += packingSpaceBetweenChildren(availableFreeSpace, style()->flexPack(), childSizes.size()); 654 652 continue; 655 653 } … … 681 679 mainAxisOffset += childMainExtent + flowAwareMarginEndForChild(child); 682 680 683 mainAxisOffset += packingSpaceBetweenChildren(availableFreeSpace, totalPositiveFlexibility,style()->flexPack(), childSizes.size());681 mainAxisOffset += packingSpaceBetweenChildren(availableFreeSpace, style()->flexPack(), childSizes.size()); 684 682 685 683 if (isColumnFlow()) … … 691 689 // on the height of the flexbox, which we only know after we've positioned all the flex items. 692 690 computeLogicalHeight(); 693 layoutColumnReverse(children, childSizes, availableFreeSpace , totalPositiveFlexibility);691 layoutColumnReverse(children, childSizes, availableFreeSpace); 694 692 } 695 693 … … 697 695 } 698 696 699 void RenderFlexibleBox::layoutColumnReverse(const OrderedFlexItemList& children, const WTF::Vector<LayoutUnit>& childSizes, LayoutUnit availableFreeSpace , float totalPositiveFlexibility)697 void RenderFlexibleBox::layoutColumnReverse(const OrderedFlexItemList& children, const WTF::Vector<LayoutUnit>& childSizes, LayoutUnit availableFreeSpace) 700 698 { 701 699 // This is similar to the logic in layoutAndPlaceChildren, except we place the children … … 703 701 // just moving the children to a new position. 704 702 LayoutUnit mainAxisOffset = logicalHeight() - flowAwareBorderEnd() - flowAwarePaddingEnd(); 705 mainAxisOffset -= initialPackingOffset(availableFreeSpace, totalPositiveFlexibility,style()->flexPack(), childSizes.size());703 mainAxisOffset -= initialPackingOffset(availableFreeSpace, style()->flexPack(), childSizes.size()); 706 704 mainAxisOffset -= isHorizontalFlow() ? verticalScrollbarWidth() : horizontalScrollbarHeight(); 707 705 … … 711 709 if (child->isPositioned()) { 712 710 child->layer()->setStaticBlockPosition(mainAxisOffset); 713 mainAxisOffset -= packingSpaceBetweenChildren(availableFreeSpace, totalPositiveFlexibility,style()->flexPack(), childSizes.size());711 mainAxisOffset -= packingSpaceBetweenChildren(availableFreeSpace, style()->flexPack(), childSizes.size()); 714 712 continue; 715 713 } … … 722 720 723 721 mainAxisOffset -= flowAwareMarginStartForChild(child); 724 mainAxisOffset -= packingSpaceBetweenChildren(availableFreeSpace, totalPositiveFlexibility,style()->flexPack(), childSizes.size());722 mainAxisOffset -= packingSpaceBetweenChildren(availableFreeSpace, style()->flexPack(), childSizes.size()); 725 723 } 726 724 } -
trunk/Source/WebCore/rendering/RenderFlexibleBox.h
r107317 r107446 104 104 void setLogicalOverrideSize(RenderBox* child, LayoutUnit childPreferredSize); 105 105 void prepareChildForPositionedLayout(RenderBox* child, LayoutUnit mainAxisOffset, LayoutUnit crossAxisOffset); 106 void layoutAndPlaceChildren(const OrderedFlexItemList&, const WTF::Vector<LayoutUnit>& childSizes, LayoutUnit availableFreeSpace , float totalPositiveFlexibility);107 void layoutColumnReverse(const OrderedFlexItemList&, const WTF::Vector<LayoutUnit>& childSizes, LayoutUnit availableFreeSpace , float totalPositiveFlexibility);106 void layoutAndPlaceChildren(const OrderedFlexItemList&, const WTF::Vector<LayoutUnit>& childSizes, LayoutUnit availableFreeSpace); 107 void layoutColumnReverse(const OrderedFlexItemList&, const WTF::Vector<LayoutUnit>& childSizes, LayoutUnit availableFreeSpace); 108 108 void alignChildren(const OrderedFlexItemList&, LayoutUnit maxAscent); 109 109 };
Note: See TracChangeset
for help on using the changeset viewer.