Skip to content
  • hyatt@apple.com's avatar
    https://bugs.webkit.org/show_bug.cgi?id=46421, make multi-column layout work with vertical text. · 61bbedf5
    hyatt@apple.com authored
    Reviewed by Dan Bernstein.
    
    Added new tests in fast/multicol/vertical-lr and fast/multicol/vertical-rl.
    
    Source/WebCore: 
    
    * css/html.css:
    Update p, blockquote and h1-h6 to respect directionality so that column layout tests that use those
    elements work properly.
    
    * rendering/InlineFlowBox.cpp:
    (WebCore::InlineFlowBox::placeBoxesInBlockDirection):
    Fix a flipping bug with the computation of lineTopIncludingMargins where it could be incorrectly shrunk
    in some cases (causing lines to all stack on top of one another).
    
    * rendering/InlineTextBox.h:
    (WebCore::InlineTextBox::calculateBoundaries):
    Fix calculateBoundaries to be physical rather than logical.
    
    * rendering/LayoutState.cpp:
    (WebCore::LayoutState::addForcedColumnBreak):
    * rendering/LayoutState.h:
    Rename childY to childLogicalOffset.
    
    * rendering/RenderBlock.cpp:
    (WebCore::RenderBlock::layoutBlock):
    (WebCore::RenderBlock::addOverflowFromChildren):
    (WebCore::RenderBlock::addOverflowFromFloats):
    (WebCore::RenderBlock::collapseMargins):
    (WebCore::RenderBlock::estimateLogicalTopPosition):
    (WebCore::RenderBlock::layoutBlockChild):
    (WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):
    (WebCore::RenderBlock::paintColumnRules):
    (WebCore::RenderBlock::paintColumnContents):
    (WebCore::RenderBlock::paintFloats):
    (WebCore::RenderBlock::selectionGaps):
    (WebCore::RenderBlock::removeFloatingObjectsBelow):
    (WebCore::RenderBlock::addOverhangingFloats):
    (WebCore::RenderBlock::hitTestFloats):
    (WebCore::RenderBlock::hitTestColumns):
    (WebCore::RenderBlock::calcColumnWidth):
    (WebCore::RenderBlock::desiredColumnWidth):
    (WebCore::RenderBlock::columnRectAt):
    (WebCore::RenderBlock::layoutColumns):
    (WebCore::RenderBlock::adjustPointToColumnContents):
    (WebCore::RenderBlock::adjustRectForColumns):
    (WebCore::RenderBlock::flipForWritingModeIncludingColumns):
    (WebCore::RenderBlock::adjustForColumns):
    (WebCore::RenderBlock::adjustForBorderFit):
    (WebCore::RenderBlock::nextPageLogicalTop):
    (WebCore::RenderBlock::applyBeforeBreak):
    (WebCore::RenderBlock::applyAfterBreak):
    (WebCore::RenderBlock::adjustForUnsplittableChild):
    (WebCore::RenderBlock::adjustLinePositionForPagination):
    * rendering/RenderBlock.h:
    (WebCore::RenderBlock::logicalRightOffsetForContent):
    (WebCore::RenderBlock::logicalLeftOffsetForContent):
    (WebCore::RenderBlock::leftForFloatIncludingMargin):
    (WebCore::RenderBlock::topForFloatIncludingMargin):
    * rendering/RenderBlockLineLayout.cpp:
    (WebCore::RenderBlock::layoutInlineChildren):
    (WebCore::RenderBlock::determineStartPosition):
    Reworking of all the RenderBlock column functions to support flipping and vertical modes.
    
    * rendering/RenderBox.cpp:
    (WebCore::RenderBox::offsetFromContainer):
    (WebCore::RenderBox::flipForWritingModeIncludingColumns):
    Patch offsetFromContainer to be aware of flipped block writing modes when dealing with column layouts.
    
    * rendering/RenderBox.h:
    (WebCore::RenderBox::clientLogicalBottom):
    Fix a bug in clientLogicalBottom where it didn't add in the right border/padding.
            
    * rendering/RenderFlexibleBox.cpp:
    (WebCore::RenderFlexibleBox::layoutBlock):
    Better terminology for pagination.
    
    * rendering/RenderInline.cpp:
    (WebCore::RenderInline::offsetFromContainer):
    (WebCore::RenderInline::mapLocalToContainer):
    * rendering/RenderLayer.cpp:
    (WebCore::RenderLayer::paintChildLayerIntoColumns):
    (WebCore::RenderLayer::hitTestChildLayerColumns):
    (WebCore::RenderLayer::localBoundingBox):
    (WebCore::RenderLayer::boundingBox):
    Patch painting in RenderLayers to be vertical-text-aware.
        
    * rendering/RenderObject.cpp:
    (WebCore::RenderObject::mapLocalToContainer):
    Add code to be flipped block-aware with columns.
    
    * rendering/RenderTable.cpp:
    (WebCore::RenderTable::layout):
    * rendering/RenderTableRow.cpp:
    (WebCore::RenderTableRow::layout):
    * rendering/RenderTableSection.cpp:
    (WebCore::RenderTableSection::layoutRows):
    Fix pagination to use better terminology.
            
    * rendering/RenderText.cpp:
    (WebCore::RenderText::absoluteQuads):
    (WebCore::RenderText::absoluteQuadsForRange):
    Fix a bug where vertical text wasn't taken into account.
    
    LayoutTests: 
    
    * fast/multicol/break-properties-expected.txt:
    * fast/multicol/break-properties.html:
    * fast/multicol/float-truncation.html:
    * fast/multicol/vertical-lr: Added.
    * fast/multicol/vertical-lr/border-padding-pagination.html: Added.
    * fast/multicol/vertical-lr/break-properties-expected.txt: Added.
    * fast/multicol/vertical-lr/break-properties.html: Added.
    * fast/multicol/vertical-lr/column-break-with-balancing.html: Added.
    * fast/multicol/vertical-lr/column-count-with-rules.html: Added.
    * fast/multicol/vertical-lr/column-rules.html: Added.
    * fast/multicol/vertical-lr/float-avoidance.html: Added.
    * fast/multicol/vertical-lr/float-multicol.html: Added.
    * fast/multicol/vertical-lr/float-paginate-complex.html: Added.
    * fast/multicol/vertical-lr/float-paginate.html: Added.
    * fast/multicol/vertical-lr/float-truncation-expected.txt: Added.
    * fast/multicol/vertical-lr/float-truncation.html: Added.
    * fast/multicol/vertical-lr/gap-non-negative-expected.txt: Added.
    * fast/multicol/vertical-lr/gap-non-negative.html: Added.
    * fast/multicol/vertical-lr/image-inside-nested-blocks-with-border-expected.txt: Added.
    * fast/multicol/vertical-lr/image-inside-nested-blocks-with-border.html: Added.
    * fast/multicol/vertical-lr/nested-columns.html: Added.
    * fast/multicol/vertical-lr/resources: Added.
    * fast/multicol/vertical-lr/resources/blimp.png: Added.
    * fast/multicol/vertical-lr/unsplittable-inline-block.html: Added.
    * fast/multicol/vertical-rl: Added.
    * fast/multicol/vertical-rl/border-padding-pagination.html: Added.
    * fast/multicol/vertical-rl/break-properties-expected.txt: Added.
    * fast/multicol/vertical-rl/break-properties.html: Added.
    * fast/multicol/vertical-rl/column-break-with-balancing.html: Added.
    * fast/multicol/vertical-rl/column-count-with-rules.html: Added.
    * fast/multicol/vertical-rl/column-rules.html: Added.
    * fast/multicol/vertical-rl/float-avoidance.html: Added.
    * fast/multicol/vertical-rl/float-multicol.html: Added.
    * fast/multicol/vertical-rl/float-paginate-complex.html: Added.
    * fast/multicol/vertical-rl/float-paginate.html: Added.
    * fast/multicol/vertical-rl/float-truncation-expected.txt: Added.
    * fast/multicol/vertical-rl/float-truncation.html: Added.
    * fast/multicol/vertical-rl/gap-non-negative-expected.txt: Added.
    * fast/multicol/vertical-rl/gap-non-negative.html: Added.
    * fast/multicol/vertical-rl/image-inside-nested-blocks-with-border-expected.txt: Added.
    * fast/multicol/vertical-rl/image-inside-nested-blocks-with-border.html: Added.
    * fast/multicol/vertical-rl/nested-columns.html: Added.
    * fast/multicol/vertical-rl/resources: Added.
    * fast/multicol/vertical-rl/resources/blimp.png: Added.
    * fast/multicol/vertical-rl/unsplittable-inline-block.html: Added.
    * platform/mac/fast/multicol/vertical-lr: Added.
    * platform/mac/fast/multicol/vertical-lr/border-padding-pagination-expected.checksum: Added.
    * platform/mac/fast/multicol/vertical-lr/border-padding-pagination-expected.png: Added.
    * platform/mac/fast/multicol/vertical-lr/border-padding-pagination-expected.txt: Added.
    * platform/mac/fast/multicol/vertical-lr/column-break-with-balancing-expected.checksum: Added.
    * platform/mac/fast/multicol/vertical-lr/column-break-with-balancing-expected.png: Added.
    * platform/mac/fast/multicol/vertical-lr/column-break-with-balancing-expected.txt: Added.
    * platform/mac/fast/multicol/vertical-lr/column-count-with-rules-expected.checksum: Added.
    * platform/mac/fast/multicol/vertical-lr/column-count-with-rules-expected.png: Added.
    * platform/mac/fast/multicol/vertical-lr/column-count-with-rules-expected.txt: Added.
    * platform/mac/fast/multicol/vertical-lr/column-rules-expected.checksum: Added.
    * platform/mac/fast/multicol/vertical-lr/column-rules-expected.png: Added.
    * platform/mac/fast/multicol/vertical-lr/column-rules-expected.txt: Added.
    * platform/mac/fast/multicol/vertical-lr/float-avoidance-expected.checksum: Added.
    * platform/mac/fast/multicol/vertical-lr/float-avoidance-expected.png: Added.
    * platform/mac/fast/multicol/vertical-lr/float-avoidance-expected.txt: Added.
    * platform/mac/fast/multicol/vertical-lr/float-multicol-expected.checksum: Added.
    * platform/mac/fast/multicol/vertical-lr/float-multicol-expected.png: Added.
    * platform/mac/fast/multicol/vertical-lr/float-multicol-expected.txt: Added.
    * platform/mac/fast/multicol/vertical-lr/float-paginate-complex-expected.checksum: Added.
    * platform/mac/fast/multicol/vertical-lr/float-paginate-complex-expected.png: Added.
    * platform/mac/fast/multicol/vertical-lr/float-paginate-complex-expected.txt: Added.
    * platform/mac/fast/multicol/vertical-lr/float-paginate-expected.checksum: Added.
    * platform/mac/fast/multicol/vertical-lr/float-paginate-expected.png: Added.
    * platform/mac/fast/multicol/vertical-lr/float-paginate-expected.txt: Added.
    * platform/mac/fast/multicol/vertical-lr/nested-columns-expected.checksum: Added.
    * platform/mac/fast/multicol/vertical-lr/nested-columns-expected.png: Added.
    * platform/mac/fast/multicol/vertical-lr/nested-columns-expected.txt: Added.
    * platform/mac/fast/multicol/vertical-lr/unsplittable-inline-block-expected.checksum: Added.
    * platform/mac/fast/multicol/vertical-lr/unsplittable-inline-block-expected.png: Added.
    * platform/mac/fast/multicol/vertical-lr/unsplittable-inline-block-expected.txt: Added.
    * platform/mac/fast/multicol/vertical-rl: Added.
    * platform/mac/fast/multicol/vertical-rl/border-padding-pagination-expected.checksum: Added.
    * platform/mac/fast/multicol/vertical-rl/border-padding-pagination-expected.png: Added.
    * platform/mac/fast/multicol/vertical-rl/border-padding-pagination-expected.txt: Added.
    * platform/mac/fast/multicol/vertical-rl/column-break-with-balancing-expected.checksum: Added.
    * platform/mac/fast/multicol/vertical-rl/column-break-with-balancing-expected.png: Added.
    * platform/mac/fast/multicol/vertical-rl/column-break-with-balancing-expected.txt: Added.
    * platform/mac/fast/multicol/vertical-rl/column-count-with-rules-expected.checksum: Added.
    * platform/mac/fast/multicol/vertical-rl/column-count-with-rules-expected.png: Added.
    * platform/mac/fast/multicol/vertical-rl/column-count-with-rules-expected.txt: Added.
    * platform/mac/fast/multicol/vertical-rl/column-rules-expected.checksum: Added.
    * platform/mac/fast/multicol/vertical-rl/column-rules-expected.png: Added.
    * platform/mac/fast/multicol/vertical-rl/column-rules-expected.txt: Added.
    * platform/mac/fast/multicol/vertical-rl/float-avoidance-expected.checksum: Added.
    * platform/mac/fast/multicol/vertical-rl/float-avoidance-expected.png: Added.
    * platform/mac/fast/multicol/vertical-rl/float-avoidance-expected.txt: Added.
    * platform/mac/fast/multicol/vertical-rl/float-multicol-expected.checksum: Added.
    * platform/mac/fast/multicol/vertical-rl/float-multicol-expected.png: Added.
    * platform/mac/fast/multicol/vertical-rl/float-multicol-expected.txt: Added.
    * platform/mac/fast/multicol/vertical-rl/float-paginate-complex-expected.checksum: Added.
    * platform/mac/fast/multicol/vertical-rl/float-paginate-complex-expected.png: Added.
    * platform/mac/fast/multicol/vertical-rl/float-paginate-complex-expected.txt: Added.
    * platform/mac/fast/multicol/vertical-rl/float-paginate-expected.checksum: Added.
    * platform/mac/fast/multicol/vertical-rl/float-paginate-expected.png: Added.
    * platform/mac/fast/multicol/vertical-rl/float-paginate-expected.txt: Added.
    * platform/mac/fast/multicol/vertical-rl/nested-columns-expected.checksum: Added.
    * platform/mac/fast/multicol/vertical-rl/nested-columns-expected.png: Added.
    * platform/mac/fast/multicol/vertical-rl/nested-columns-expected.txt: Added.
    * platform/mac/fast/multicol/vertical-rl/unsplittable-inline-block-expected.checksum: Added.
    * platform/mac/fast/multicol/vertical-rl/unsplittable-inline-block-expected.png: Added.
    * platform/mac/fast/multicol/vertical-rl/unsplittable-inline-block-expected.txt: Added.
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@76726 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    61bbedf5