| 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. | 7 * Copyright (C) 2003, 2004, 2005, 2006, 2008, 2009, 2010, 2013 Apple Inc. |
| 8 * All rights reserved. | 8 * All rights reserved. |
| 9 * Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com) | 9 * Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com) |
| 10 * | 10 * |
| (...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 252 unsigned insertionRow = row->rowIndex(); | 252 unsigned insertionRow = row->rowIndex(); |
| 253 | 253 |
| 254 // ### mozilla still seems to do the old HTML way, even for strict DTD | 254 // ### mozilla still seems to do the old HTML way, even for strict DTD |
| 255 // (see the annotation on table cell layouting in the CSS specs and the | 255 // (see the annotation on table cell layouting in the CSS specs and the |
| 256 // testcase below: | 256 // testcase below: |
| 257 // <TABLE border> | 257 // <TABLE border> |
| 258 // <TR><TD>1 <TD rowspan="2">2 <TD>3 <TD>4 | 258 // <TR><TD>1 <TD rowspan="2">2 <TD>3 <TD>4 |
| 259 // <TR><TD colspan="2">5 | 259 // <TR><TD colspan="2">5 |
| 260 // </TABLE> | 260 // </TABLE> |
| 261 unsigned nCols = numCols(insertionRow); | 261 unsigned nCols = numCols(insertionRow); |
| 262 while (m_cCol < nCols && (cellAt(insertionRow, m_cCol).hasCells() || | 262 while (m_cCol < nCols && |
| 263 cellAt(insertionRow, m_cCol).inColSpan)) | 263 (cellAt(insertionRow, m_cCol).hasCells() || |
| 264 cellAt(insertionRow, m_cCol).inColSpan)) |
| 264 m_cCol++; | 265 m_cCol++; |
| 265 | 266 |
| 266 updateLogicalHeightForCell(m_grid[insertionRow], cell); | 267 updateLogicalHeightForCell(m_grid[insertionRow], cell); |
| 267 | 268 |
| 268 ensureRows(insertionRow + rSpan); | 269 ensureRows(insertionRow + rSpan); |
| 269 | 270 |
| 270 m_grid[insertionRow].rowLayoutObject = row; | 271 m_grid[insertionRow].rowLayoutObject = row; |
| 271 | 272 |
| 272 unsigned col = m_cCol; | 273 unsigned col = m_cCol; |
| 273 // tell the cell where it is | 274 // tell the cell where it is |
| (...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 581 borderSpacingForRow(endRow - 1); | 582 borderSpacingForRow(endRow - 1); |
| 582 | 583 |
| 583 totalRowspanCellHeight += accumulatedCellPositionIncrease; | 584 totalRowspanCellHeight += accumulatedCellPositionIncrease; |
| 584 if (rowToApplyExtraHeight >= cellRowIndex && rowToApplyExtraHeight < endRow) | 585 if (rowToApplyExtraHeight >= cellRowIndex && rowToApplyExtraHeight < endRow) |
| 585 totalRowspanCellHeight += extraTableHeightToPropgate; | 586 totalRowspanCellHeight += extraTableHeightToPropgate; |
| 586 | 587 |
| 587 if (totalRowspanCellHeight < cell->logicalHeightForRowSizing()) { | 588 if (totalRowspanCellHeight < cell->logicalHeightForRowSizing()) { |
| 588 unsigned extraHeightRequired = | 589 unsigned extraHeightRequired = |
| 589 cell->logicalHeightForRowSizing() - totalRowspanCellHeight; | 590 cell->logicalHeightForRowSizing() - totalRowspanCellHeight; |
| 590 | 591 |
| 591 rowHeight = | 592 rowHeight = std::max( |
| 592 std::max(rowHeight, extraHeightRequired / | 593 rowHeight, |
| 593 spanningCellsRowsCountHavingZeroHeight); | 594 extraHeightRequired / spanningCellsRowsCountHavingZeroHeight); |
| 594 } | 595 } |
| 595 } | 596 } |
| 596 | 597 |
| 597 return rowHeight; | 598 return rowHeight; |
| 598 } | 599 } |
| 599 | 600 |
| 600 void LayoutTableSection::updateRowsHeightHavingOnlySpanningCells( | 601 void LayoutTableSection::updateRowsHeightHavingOnlySpanningCells( |
| 601 LayoutTableCell* cell, | 602 LayoutTableCell* cell, |
| 602 struct SpanningRowsHeight& spanningRowsHeight, | 603 struct SpanningRowsHeight& spanningRowsHeight, |
| 603 unsigned& extraHeightToPropagate, | 604 unsigned& extraHeightToPropagate, |
| (...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 804 (cell->paddingBefore() - cell->intrinsicPaddingBefore())) { | 805 (cell->paddingBefore() - cell->intrinsicPaddingBefore())) { |
| 805 m_grid[row].baseline = std::max(m_grid[row].baseline, baselinePosition); | 806 m_grid[row].baseline = std::max(m_grid[row].baseline, baselinePosition); |
| 806 | 807 |
| 807 int cellStartRowBaselineDescent = 0; | 808 int cellStartRowBaselineDescent = 0; |
| 808 if (cell->rowSpan() == 1) { | 809 if (cell->rowSpan() == 1) { |
| 809 baselineDescent = | 810 baselineDescent = |
| 810 std::max(baselineDescent, | 811 std::max(baselineDescent, |
| 811 cell->logicalHeightForRowSizing() - baselinePosition); | 812 cell->logicalHeightForRowSizing() - baselinePosition); |
| 812 cellStartRowBaselineDescent = baselineDescent; | 813 cellStartRowBaselineDescent = baselineDescent; |
| 813 } | 814 } |
| 814 m_rowPos[row + 1] = | 815 m_rowPos[row + 1] = std::max<int>( |
| 815 std::max<int>(m_rowPos[row + 1], m_rowPos[row] + m_grid[row].baseline + | 816 m_rowPos[row + 1], |
| 816 cellStartRowBaselineDescent); | 817 m_rowPos[row] + m_grid[row].baseline + cellStartRowBaselineDescent); |
| 817 } | 818 } |
| 818 } | 819 } |
| 819 | 820 |
| 820 int LayoutTableSection::calcRowLogicalHeight() { | 821 int LayoutTableSection::calcRowLogicalHeight() { |
| 821 #if DCHECK_IS_ON() | 822 #if DCHECK_IS_ON() |
| 822 SetLayoutNeededForbiddenScope layoutForbiddenScope(*this); | 823 SetLayoutNeededForbiddenScope layoutForbiddenScope(*this); |
| 823 #endif | 824 #endif |
| 824 | 825 |
| 825 ASSERT(!needsLayout()); | 826 ASSERT(!needsLayout()); |
| 826 | 827 |
| (...skipping 1248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2075 // the header in all columns. | 2076 // the header in all columns. |
| 2076 // Note that this is in flow thread coordinates, not visual coordinates. The | 2077 // Note that this is in flow thread coordinates, not visual coordinates. The |
| 2077 // enclosing LayoutFlowThread will convert to visual coordinates. | 2078 // enclosing LayoutFlowThread will convert to visual coordinates. |
| 2078 if (table()->header() == this && isRepeatingHeaderGroup()) | 2079 if (table()->header() == this && isRepeatingHeaderGroup()) |
| 2079 rect.setHeight(table()->logicalHeight()); | 2080 rect.setHeight(table()->logicalHeight()); |
| 2080 return LayoutTableBoxComponent::mapToVisualRectInAncestorSpace(ancestor, rect, | 2081 return LayoutTableBoxComponent::mapToVisualRectInAncestorSpace(ancestor, rect, |
| 2081 flags); | 2082 flags); |
| 2082 } | 2083 } |
| 2083 | 2084 |
| 2084 } // namespace blink | 2085 } // namespace blink |
| OLD | NEW |