Changeset 117484 in webkit
- Timestamp:
- May 17, 2012 1:01:50 PM (12 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r117482 r117484 1 2012-05-17 Dan Bernstein <mitz@apple.com> 2 3 In vertical writing modes, pagination may split a line after a block shifts 4 https://bugs.webkit.org/show_bug.cgi?id=86763 5 6 Reviewed by Sam Weinig. 7 8 * fast/multicol/pageLogicalOffset-vertical-expected.html: Added. 9 * fast/multicol/pageLogicalOffset-vertical.html: Added. 10 1 11 2012-05-17 Abhishek Arya <inferno@chromium.org> 2 12 -
trunk/Source/WebCore/ChangeLog
r117482 r117484 1 2012-05-17 Dan Bernstein <mitz@apple.com> 2 3 In vertical writing modes, pagination may split a line after a block shifts 4 https://bugs.webkit.org/show_bug.cgi?id=86763 5 6 Reviewed by Sam Weinig. 7 8 Test: fast/multicol/pageLogicalOffset-vertical.html 9 10 LayoutState::pageLogicalOffset() was returning bogus results in vertical writing modes, 11 because it was always using physical heights. Changed it to take a RenderBox and use its 12 writing mode to choose between heights and widths. 13 14 * rendering/LayoutState.cpp: 15 (WebCore::LayoutState::pageLogicalOffset): 16 (WebCore::LayoutState::addForcedColumnBreak): 17 * rendering/LayoutState.h: 18 (LayoutState): 19 * rendering/RenderBlock.cpp: 20 (WebCore::RenderBlock::layoutBlock): 21 (WebCore::RenderBlock::markForPaginationRelayoutIfNeeded): 22 (WebCore::RenderBlock::layoutColumns): 23 (WebCore::RenderBlock::applyBeforeBreak): 24 (WebCore::RenderBlock::applyAfterBreak): 25 * rendering/RenderDeprecatedFlexibleBox.cpp: 26 (WebCore::RenderDeprecatedFlexibleBox::layoutBlock): 27 * rendering/RenderTable.cpp: 28 (WebCore::RenderTable::layout): 29 * rendering/RenderTableRow.cpp: 30 (WebCore::RenderTableRow::layout): 31 * rendering/RenderTableSection.cpp: 32 (WebCore::RenderTableSection::layoutRows): 33 1 34 2012-05-17 Abhishek Arya <inferno@chromium.org> 2 35 -
trunk/Source/WebCore/rendering/LayoutState.cpp
r109378 r117484 197 197 } 198 198 199 LayoutUnit LayoutState::pageLogicalOffset(LayoutUnit childLogicalOffset) const 200 { 201 return m_layoutOffset.height() + childLogicalOffset - m_pageOffset.height(); 202 } 203 204 void LayoutState::addForcedColumnBreak(LayoutUnit childLogicalOffset) 199 LayoutUnit LayoutState::pageLogicalOffset(RenderBox* child, LayoutUnit childLogicalOffset) const 200 { 201 if (child->isHorizontalWritingMode()) 202 return m_layoutOffset.height() + childLogicalOffset - m_pageOffset.height(); 203 return m_layoutOffset.width() + childLogicalOffset - m_pageOffset.width(); 204 } 205 206 void LayoutState::addForcedColumnBreak(RenderBox* child, LayoutUnit childLogicalOffset) 205 207 { 206 208 if (!m_columnInfo || m_columnInfo->columnHeight()) 207 209 return; 208 m_columnInfo->addForcedBreak(pageLogicalOffset(child LogicalOffset));210 m_columnInfo->addForcedBreak(pageLogicalOffset(child, childLogicalOffset)); 209 211 } 210 212 -
trunk/Source/WebCore/rendering/LayoutState.h
r107160 r117484 75 75 // The page logical offset is the object's offset from the top of the page in the page progression 76 76 // direction (so an x-offset in vertical text and a y-offset for horizontal text). 77 LayoutUnit pageLogicalOffset( LayoutUnit childLogicalOffset) const;77 LayoutUnit pageLogicalOffset(RenderBox*, LayoutUnit childLogicalOffset) const; 78 78 79 void addForcedColumnBreak( LayoutUnit childLogicalOffset);79 void addForcedColumnBreak(RenderBox*, LayoutUnit childLogicalOffset); 80 80 81 81 LayoutUnit pageLogicalHeight() const { return m_pageLogicalHeight; } -
trunk/Source/WebCore/rendering/RenderBlock.cpp
r117482 r117484 1519 1519 1520 1520 if (renderView->layoutState()->m_pageLogicalHeight) 1521 setPageLogicalOffset(renderView->layoutState()->pageLogicalOffset( logicalTop()));1521 setPageLogicalOffset(renderView->layoutState()->pageLogicalOffset(this, logicalTop())); 1522 1522 1523 1523 updateLayerTransform(); … … 2531 2531 return; 2532 2532 2533 if (view()->layoutState()->pageLogicalHeightChanged() || (view()->layoutState()->pageLogicalHeight() && view()->layoutState()->pageLogicalOffset( logicalTop()) != pageLogicalOffset()))2533 if (view()->layoutState()->pageLogicalHeightChanged() || (view()->layoutState()->pageLogicalHeight() && view()->layoutState()->pageLogicalOffset(this, logicalTop()) != pageLogicalOffset())) 2534 2534 setChildNeedsLayout(true, MarkOnlyThis); 2535 2535 } … … 4991 4991 if (!pageLogicalHeight) { 4992 4992 LayoutUnit distanceBetweenBreaks = max<LayoutUnit>(colInfo->maximumDistanceBetweenForcedBreaks(), 4993 view()->layoutState()->pageLogicalOffset( borderBefore() + paddingBefore() + contentLogicalHeight()) - colInfo->forcedBreakOffset());4993 view()->layoutState()->pageLogicalOffset(this, borderBefore() + paddingBefore() + contentLogicalHeight()) - colInfo->forcedBreakOffset()); 4994 4994 columnHeight = max(colInfo->minimumColumnHeight(), distanceBetweenBreaks); 4995 4995 } … … 6655 6655 if (checkBeforeAlways && inNormalFlow(child) && hasNextPage(logicalOffset, IncludePageBoundary)) { 6656 6656 if (checkColumnBreaks) 6657 view()->layoutState()->addForcedColumnBreak( logicalOffset);6657 view()->layoutState()->addForcedColumnBreak(child, logicalOffset); 6658 6658 return nextPageLogicalTop(logicalOffset, IncludePageBoundary); 6659 6659 } … … 6672 6672 marginInfo.setMarginAfterQuirk(true); // Cause margins to be discarded for any following content. 6673 6673 if (checkColumnBreaks) 6674 view()->layoutState()->addForcedColumnBreak( logicalOffset);6674 view()->layoutState()->addForcedColumnBreak(child, logicalOffset); 6675 6675 return nextPageLogicalTop(logicalOffset, IncludePageBoundary); 6676 6676 } -
trunk/Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp
r115846 r117484 302 302 303 303 if (view()->layoutState()->pageLogicalHeight()) 304 setPageLogicalOffset(view()->layoutState()->pageLogicalOffset( logicalTop()));304 setPageLogicalOffset(view()->layoutState()->pageLogicalOffset(this, logicalTop())); 305 305 306 306 // Update our scrollbars if we're overflow:auto/scroll/hidden now that we know if -
trunk/Source/WebCore/rendering/RenderTable.cpp
r117339 r117484 457 457 458 458 if (view()->layoutState()->pageLogicalHeight()) 459 setPageLogicalOffset(view()->layoutState()->pageLogicalOffset( logicalTop()));459 setPageLogicalOffset(view()->layoutState()->pageLogicalOffset(this, logicalTop())); 460 460 461 461 bool didFullRepaint = repainter.repaintAfterLayout(); -
trunk/Source/WebCore/rendering/RenderTableRow.cpp
r116174 r117484 149 149 if (child->isTableCell()) { 150 150 RenderTableCell* cell = toRenderTableCell(child); 151 if (!cell->needsLayout() && paginated && view()->layoutState()->pageLogicalHeight() && view()->layoutState()->pageLogicalOffset(cell ->logicalTop()) != cell->pageLogicalOffset())151 if (!cell->needsLayout() && paginated && view()->layoutState()->pageLogicalHeight() && view()->layoutState()->pageLogicalOffset(cell, cell->logicalTop()) != cell->pageLogicalOffset()) 152 152 cell->setChildNeedsLayout(true, MarkOnlyThis); 153 153 -
trunk/Source/WebCore/rendering/RenderTableSection.cpp
r117477 r117484 663 663 cell->setNeedsLayout(true, MarkOnlyThis); 664 664 665 if (!cell->needsLayout() && view()->layoutState()->pageLogicalHeight() && view()->layoutState()->pageLogicalOffset(cell ->logicalTop()) != cell->pageLogicalOffset())665 if (!cell->needsLayout() && view()->layoutState()->pageLogicalHeight() && view()->layoutState()->pageLogicalOffset(cell, cell->logicalTop()) != cell->pageLogicalOffset()) 666 666 cell->setChildNeedsLayout(true, MarkOnlyThis); 667 667
Note: See TracChangeset
for help on using the changeset viewer.