Changeset 261980 in webkit
- Timestamp:
- May 20, 2020 6:58:33 PM (4 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r261979 r261980 1 2020-05-20 Zalan Bujtas <zalan@apple.com> 2 3 [LFC][TFC] Preferred width computation should take border collapsing into account 4 https://bugs.webkit.org/show_bug.cgi?id=212141 5 6 Reviewed by Antti Koivisto. 7 8 * fast/layoutformattingcontext/table-simple-border-collapse2-expected.html: Added. 9 * fast/layoutformattingcontext/table-simple-border-collapse2.html: Added. 10 1 11 2020-05-20 Zalan Bujtas <zalan@apple.com> 2 12 -
trunk/Source/WebCore/ChangeLog
r261979 r261980 1 2020-05-20 Zalan Bujtas <zalan@apple.com> 2 3 [LFC][TFC] Preferred width computation should take border collapsing into account 4 https://bugs.webkit.org/show_bug.cgi?id=212141 5 6 Reviewed by Antti Koivisto. 7 8 Test: fast/layoutformattingcontext/table-simple-border-collapse2.html 9 10 * layout/tableformatting/TableFormattingContext.cpp: 11 (WebCore::Layout::TableFormattingContext::computedPreferredWidthForColumns): 12 * layout/tableformatting/TableFormattingContext.h: 13 (WebCore::Layout::TableFormattingContext::Geometry::Geometry): 14 * layout/tableformatting/TableFormattingContextGeometry.cpp: 15 (WebCore::Layout::TableFormattingContext::Geometry::intrinsicWidthConstraintsForCell): 16 1 17 2020-05-20 Zalan Bujtas <zalan@apple.com> 2 18 -
trunk/Source/WebCore/layout/tableformatting/TableFormattingContext.cpp
r261919 r261980 322 322 auto intrinsicWidth = formattingState.intrinsicWidthConstraintsForBox(cellBox); 323 323 if (!intrinsicWidth) { 324 intrinsicWidth = geometry().intrinsicWidthConstraintsForCell( cellBox);324 intrinsicWidth = geometry().intrinsicWidthConstraintsForCell(*cell); 325 325 formattingState.setIntrinsicWidthConstraintsForBox(cellBox, *intrinsicWidth); 326 326 } -
trunk/Source/WebCore/layout/tableformatting/TableFormattingContext.h
r261810 r261980 68 68 LayoutUnit cellHeigh(const ContainerBox&) const; 69 69 Optional<LayoutUnit> computedColumnWidth(const ContainerBox& columnBox) const; 70 FormattingContext::IntrinsicWidthConstraints intrinsicWidthConstraintsForCell(const ContainerBox& cellBox);70 FormattingContext::IntrinsicWidthConstraints intrinsicWidthConstraintsForCell(const TableGrid::Cell&); 71 71 InlineLayoutUnit usedBaselineForCell(const ContainerBox& cellBox); 72 72 73 73 private: 74 74 friend class TableFormattingContext; 75 Geometry(const TableFormattingContext& );75 Geometry(const TableFormattingContext&, const TableGrid&); 76 76 77 77 const TableFormattingContext& formattingContext() const { return downcast<TableFormattingContext>(FormattingContext::Geometry::formattingContext()); } 78 const TableGrid& m_grid; 78 79 }; 79 TableFormattingContext::Geometry geometry() const { return Geometry(*this ); }80 TableFormattingContext::Geometry geometry() const { return Geometry(*this, formattingState().tableGrid()); } 80 81 TableFormattingContext::TableLayout tableLayout() const { return TableLayout(*this, formattingState().tableGrid()); } 81 82 … … 93 94 }; 94 95 95 inline TableFormattingContext::Geometry::Geometry(const TableFormattingContext& tableFormattingContext )96 inline TableFormattingContext::Geometry::Geometry(const TableFormattingContext& tableFormattingContext, const TableGrid& grid) 96 97 : FormattingContext::Geometry(tableFormattingContext) 98 , m_grid(grid) 97 99 { 98 100 } -
trunk/Source/WebCore/layout/tableformatting/TableFormattingContextGeometry.cpp
r261832 r261980 56 56 } 57 57 58 FormattingContext::IntrinsicWidthConstraints TableFormattingContext::Geometry::intrinsicWidthConstraintsForCell(const ContainerBox& cellBox)58 FormattingContext::IntrinsicWidthConstraints TableFormattingContext::Geometry::intrinsicWidthConstraintsForCell(const TableGrid::Cell& cell) 59 59 { 60 auto fixedMarginBorderAndPadding = [&] { 61 auto& style = cellBox.style(); 62 return fixedValue(style.marginStart()).valueOr(0) 63 + LayoutUnit { style.borderLeftWidth() } 64 + fixedValue(style.paddingLeft()).valueOr(0) 65 + fixedValue(style.paddingRight()).valueOr(0) 66 + LayoutUnit { style.borderRightWidth() } 67 + fixedValue(style.marginEnd()).valueOr(0); 60 auto& cellBox = cell.box(); 61 auto& style = cellBox.style(); 62 63 auto computedHorizontalBorder = [&] { 64 auto leftBorderWidth = LayoutUnit { style.borderLeftWidth() }; 65 auto rightBorderWidth = LayoutUnit { style.borderRightWidth() }; 66 if (auto collapsedBorder = m_grid.collapsedBorder()) { 67 auto cellPosition = cell.position(); 68 if (!cellPosition.column) 69 leftBorderWidth = collapsedBorder->horizontal.left / 2; 70 if (cellPosition.column == m_grid.columns().size() - 1) 71 rightBorderWidth = collapsedBorder->horizontal.right / 2; 72 } 73 return leftBorderWidth + rightBorderWidth; 68 74 }; 69 75 … … 80 86 // FIXME Check for box-sizing: border-box; 81 87 auto intrinsicWidthConstraints = constrainByMinMaxWidth(cellBox, computedIntrinsicWidthConstraints()); 82 intrinsicWidthConstraints.expand(fixedMarginBorderAndPadding()); 88 // Expand with border 89 intrinsicWidthConstraints.expand(computedHorizontalBorder()); 90 // padding 91 intrinsicWidthConstraints.expand(fixedValue(style.paddingLeft()).valueOr(0) + fixedValue(style.paddingRight()).valueOr(0)); 92 // and margin 93 intrinsicWidthConstraints.expand(fixedValue(style.marginStart()).valueOr(0) + fixedValue(style.marginEnd()).valueOr(0)); 83 94 return intrinsicWidthConstraints; 84 95 }
Note: See TracChangeset
for help on using the changeset viewer.