| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1997 Martin Jones (mjones@kde.org) | 2 * Copyright (C) 1997 Martin Jones (mjones@kde.org) |
| 3 * (C) 1997 Torben Weis (weis@kde.org) | 3 * (C) 1997 Torben Weis (weis@kde.org) |
| 4 * (C) 1998 Waldo Bastian (bastian@kde.org) | 4 * (C) 1998 Waldo Bastian (bastian@kde.org) |
| 5 * (C) 1999 Lars Knoll (knoll@kde.org) | 5 * (C) 1999 Lars Knoll (knoll@kde.org) |
| 6 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 6 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 7 * Copyright (C) 2003, 2004, 2005, 2006, 2008, 2009, 2010, 2013 Apple Inc. All r
ights reserved. | 7 * Copyright (C) 2003, 2004, 2005, 2006, 2008, 2009, 2010, 2013 Apple Inc. All r
ights reserved. |
| 8 * Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com) | 8 * Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com) |
| 9 * | 9 * |
| 10 * This library is free software; you can redistribute it and/or | 10 * This library is free software; you can redistribute it and/or |
| (...skipping 963 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 974 LayoutTableRow* rowLayoutObject = m_grid[r].rowLayoutObject; | 974 LayoutTableRow* rowLayoutObject = m_grid[r].rowLayoutObject; |
| 975 int paginationStrutOnRow = 0; | 975 int paginationStrutOnRow = 0; |
| 976 if (rowLayoutObject) { | 976 if (rowLayoutObject) { |
| 977 rowLayoutObject->setLocation(LayoutPoint(0, m_rowPos[r])); | 977 rowLayoutObject->setLocation(LayoutPoint(0, m_rowPos[r])); |
| 978 rowLayoutObject->setLogicalWidth(logicalWidth()); | 978 rowLayoutObject->setLogicalWidth(logicalWidth()); |
| 979 rowLayoutObject->setLogicalHeight(LayoutUnit(m_rowPos[r + 1] - m_row
Pos[r] - vspacing)); | 979 rowLayoutObject->setLogicalHeight(LayoutUnit(m_rowPos[r + 1] - m_row
Pos[r] - vspacing)); |
| 980 rowLayoutObject->updateLayerTransformAfterLayout(); | 980 rowLayoutObject->updateLayerTransformAfterLayout(); |
| 981 if (isPaginated) { | 981 if (isPaginated) { |
| 982 paginationStrutOnRow = paginationStrutForRow(rowLayoutObject, La
youtUnit(m_rowPos[r])); | 982 paginationStrutOnRow = paginationStrutForRow(rowLayoutObject, La
youtUnit(m_rowPos[r])); |
| 983 if (paginationStrutOnRow) { | 983 if (paginationStrutOnRow) { |
| 984 LayoutTableSection* header = table()->header(); |
| 985 // If we have a header group we will paint it at the top of
each page, move the rows |
| 986 // down to accomodate it. |
| 987 if (header && header != this) |
| 988 paginationStrutOnRow += header->logicalHeight().toInt(); |
| 984 for (unsigned rowIndex = r; rowIndex <= totalRows; rowIndex+
+) | 989 for (unsigned rowIndex = r; rowIndex <= totalRows; rowIndex+
+) |
| 985 m_rowPos[rowIndex] += paginationStrutOnRow; | 990 m_rowPos[rowIndex] += paginationStrutOnRow; |
| 986 } | 991 } |
| 987 } | 992 } |
| 988 } | 993 } |
| 989 | 994 |
| 990 int rowHeightIncreaseForPagination = INT_MIN; | 995 int rowHeightIncreaseForPagination = INT_MIN; |
| 991 | 996 |
| 992 for (unsigned c = 0; c < nEffCols; c++) { | 997 for (unsigned c = 0; c < nEffCols; c++) { |
| 993 CellStruct& cs = cellAt(r, c); | 998 CellStruct& cs = cellAt(r, c); |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1101 | 1106 |
| 1102 ASSERT(!needsLayout()); | 1107 ASSERT(!needsLayout()); |
| 1103 | 1108 |
| 1104 setLogicalHeight(LayoutUnit(m_rowPos[totalRows])); | 1109 setLogicalHeight(LayoutUnit(m_rowPos[totalRows])); |
| 1105 | 1110 |
| 1106 computeOverflowFromCells(totalRows, nEffCols); | 1111 computeOverflowFromCells(totalRows, nEffCols); |
| 1107 } | 1112 } |
| 1108 | 1113 |
| 1109 int LayoutTableSection::paginationStrutForRow(LayoutTableRow* row, LayoutUnit lo
gicalOffset) const | 1114 int LayoutTableSection::paginationStrutForRow(LayoutTableRow* row, LayoutUnit lo
gicalOffset) const |
| 1110 { | 1115 { |
| 1111 if (row->getPaginationBreakability() == AllowAnyBreaks) | 1116 // Even if the row allows us to break-inside, we will want to put a strut on
the row if we have a header |
| 1117 // group that wants to appear at the top of each page. |
| 1118 bool tableHeaderForcesStrut = table()->header() ? table()->header()->getPagi
nationBreakability() != AllowAnyBreaks : false; |
| 1119 if (row->getPaginationBreakability() == AllowAnyBreaks && !tableHeaderForces
Strut) |
| 1112 return 0; | 1120 return 0; |
| 1113 LayoutUnit pageLogicalHeight = pageLogicalHeightForOffset(logicalOffset); | 1121 LayoutUnit pageLogicalHeight = pageLogicalHeightForOffset(logicalOffset); |
| 1114 if (!pageLogicalHeight) | 1122 if (!pageLogicalHeight) |
| 1115 return 0; | 1123 return 0; |
| 1116 // If the row is too tall for the page don't insert a strut. | 1124 // If the row is too tall for the page don't insert a strut. |
| 1117 LayoutUnit rowLogicalHeight = row->logicalHeight(); | 1125 LayoutUnit rowLogicalHeight = row->logicalHeight(); |
| 1118 if (rowLogicalHeight > pageLogicalHeight) | 1126 if (rowLogicalHeight > pageLogicalHeight) |
| 1119 return 0; | 1127 return 0; |
| 1120 LayoutUnit remainingLogicalHeight = pageRemainingLogicalHeightForOffset(logi
calOffset, LayoutBlock::AssociateWithLatterPage); | 1128 LayoutUnit remainingLogicalHeight = pageRemainingLogicalHeightForOffset(logi
calOffset, LayoutBlock::AssociateWithLatterPage); |
| 1121 if (remainingLogicalHeight >= rowLogicalHeight) | 1129 if (remainingLogicalHeight >= rowLogicalHeight) |
| (...skipping 546 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1668 // FIXME: The table's direction should determine our row's direction, not th
e section's (see bug 96691). | 1676 // FIXME: The table's direction should determine our row's direction, not th
e section's (see bug 96691). |
| 1669 if (!style()->isLeftToRightDirection()) | 1677 if (!style()->isLeftToRightDirection()) |
| 1670 cellLocation.setX(LayoutUnit(table()->effectiveColumnPositions()[table()
->numEffectiveColumns()] - table()->effectiveColumnPositions()[table()->absolute
ColumnToEffectiveColumn(cell->absoluteColumnIndex() + cell->colSpan())] + horizo
ntalBorderSpacing)); | 1678 cellLocation.setX(LayoutUnit(table()->effectiveColumnPositions()[table()
->numEffectiveColumns()] - table()->effectiveColumnPositions()[table()->absolute
ColumnToEffectiveColumn(cell->absoluteColumnIndex() + cell->colSpan())] + horizo
ntalBorderSpacing)); |
| 1671 else | 1679 else |
| 1672 cellLocation.setX(LayoutUnit(table()->effectiveColumnPositions()[effecti
veColumn] + horizontalBorderSpacing)); | 1680 cellLocation.setX(LayoutUnit(table()->effectiveColumnPositions()[effecti
veColumn] + horizontalBorderSpacing)); |
| 1673 | 1681 |
| 1674 cell->setLogicalLocation(cellLocation); | 1682 cell->setLogicalLocation(cellLocation); |
| 1675 } | 1683 } |
| 1676 | 1684 |
| 1677 } // namespace blink | 1685 } // namespace blink |
| OLD | NEW |