| 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 Apple Inc. All rights 
      reserved. | 7  * Copyright (C) 2003, 2004, 2005, 2006, 2008, 2009, 2010 Apple Inc. All rights 
      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 510 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 521 | 521 | 
| 522     m_rowPos.resize(m_grid.size() + 1); | 522     m_rowPos.resize(m_grid.size() + 1); | 
| 523 | 523 | 
| 524     // We ignore the border-spacing on any non-top section as it is already incl
      uded in the previous section's last row position. | 524     // We ignore the border-spacing on any non-top section as it is already incl
      uded in the previous section's last row position. | 
| 525     if (this == table()->topSection()) | 525     if (this == table()->topSection()) | 
| 526         m_rowPos[0] = table()->vBorderSpacing(); | 526         m_rowPos[0] = table()->vBorderSpacing(); | 
| 527     else | 527     else | 
| 528         m_rowPos[0] = 0; | 528         m_rowPos[0] = 0; | 
| 529 | 529 | 
| 530     SpanningRenderTableCells rowSpanCells; | 530     SpanningRenderTableCells rowSpanCells; | 
|  | 531 #ifndef NDEBUG | 
|  | 532     HashSet<const RenderTableCell*> uniqueCells; | 
|  | 533 #endif | 
| 531 | 534 | 
| 532     for (unsigned r = 0; r < m_grid.size(); r++) { | 535     for (unsigned r = 0; r < m_grid.size(); r++) { | 
| 533         m_grid[r].baseline = 0; | 536         m_grid[r].baseline = 0; | 
| 534         LayoutUnit baselineDescent = 0; | 537         LayoutUnit baselineDescent = 0; | 
| 535 | 538 | 
| 536         // Our base size is the biggest logical height from our cells' styles (e
      xcluding row spanning cells). | 539         // Our base size is the biggest logical height from our cells' styles (e
      xcluding row spanning cells). | 
| 537         m_rowPos[r + 1] = max(m_rowPos[r] + minimumValueForLength(m_grid[r].logi
      calHeight, 0, viewRenderer).round(), 0); | 540         m_rowPos[r + 1] = max(m_rowPos[r] + minimumValueForLength(m_grid[r].logi
      calHeight, 0, viewRenderer).round(), 0); | 
| 538 | 541 | 
| 539         Row& row = m_grid[r].row; | 542         Row& row = m_grid[r].row; | 
| 540         unsigned totalCols = row.size(); | 543         unsigned totalCols = row.size(); | 
|  | 544         RenderTableCell* lastRowSpanCell = 0; | 
| 541 | 545 | 
| 542         for (unsigned c = 0; c < totalCols; c++) { | 546         for (unsigned c = 0; c < totalCols; c++) { | 
| 543             CellStruct& current = cellAt(r, c); | 547             CellStruct& current = cellAt(r, c); | 
| 544             for (unsigned i = 0; i < current.cells.size(); i++) { | 548             for (unsigned i = 0; i < current.cells.size(); i++) { | 
| 545                 cell = current.cells[i]; | 549                 cell = current.cells[i]; | 
| 546                 if (current.inColSpan && cell->rowSpan() == 1) | 550                 if (current.inColSpan && cell->rowSpan() == 1) | 
| 547                     continue; | 551                     continue; | 
| 548 | 552 | 
| 549                 if (RuntimeEnabledFeatures::rowSpanLogicalHeightSpreadingEnabled
      ()) { | 553                 if (RuntimeEnabledFeatures::rowSpanLogicalHeightSpreadingEnabled
      ()) { | 
| 550                     if (cell->rowSpan() > 1) { | 554                     if (cell->rowSpan() > 1) { | 
| 551                         // For row spanning cells, we only handle them for the f
      irst row they span. This ensures we take their baseline into account. | 555                         // For row spanning cells, we only handle them for the f
      irst row they span. This ensures we take their baseline into account. | 
| 552                         if (cell->rowIndex() == r) { | 556                         if (lastRowSpanCell != cell && cell->rowIndex() == r) { | 
|  | 557 #ifndef NDEBUG | 
|  | 558                             ASSERT(!uniqueCells.contains(cell)); | 
|  | 559                             uniqueCells.add(cell); | 
|  | 560 #endif | 
|  | 561 | 
| 553                             rowSpanCells.append(cell); | 562                             rowSpanCells.append(cell); | 
|  | 563                             lastRowSpanCell = cell; | 
| 554 | 564 | 
| 555                             // Find out the baseline. The baseline is set on the
       first row in a rowSpan. | 565                             // Find out the baseline. The baseline is set on the
       first row in a rowSpan. | 
| 556                             updateBaselineForCell(cell, r, baselineDescent); | 566                             updateBaselineForCell(cell, r, baselineDescent); | 
| 557                         } | 567                         } | 
| 558                         continue; | 568                         continue; | 
| 559                     } | 569                     } | 
| 560 | 570 | 
| 561                     ASSERT(cell->rowSpan() == 1); | 571                     ASSERT(cell->rowSpan() == 1); | 
| 562                 } else { | 572                 } else { | 
| 563                     // FIXME: We add all the logical row of a rowspan to the las
      t rows | 573                     // FIXME: We add all the logical row of a rowspan to the las
      t rows | 
| (...skipping 1133 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1697     if (!style()->isLeftToRightDirection()) | 1707     if (!style()->isLeftToRightDirection()) | 
| 1698         cellLocation.setX(table()->columnPositions()[table()->numEffCols()] - ta
      ble()->columnPositions()[table()->colToEffCol(cell->col() + cell->colSpan())] + 
      horizontalBorderSpacing); | 1708         cellLocation.setX(table()->columnPositions()[table()->numEffCols()] - ta
      ble()->columnPositions()[table()->colToEffCol(cell->col() + cell->colSpan())] + 
      horizontalBorderSpacing); | 
| 1699     else | 1709     else | 
| 1700         cellLocation.setX(table()->columnPositions()[effectiveColumn] + horizont
      alBorderSpacing); | 1710         cellLocation.setX(table()->columnPositions()[effectiveColumn] + horizont
      alBorderSpacing); | 
| 1701 | 1711 | 
| 1702     cell->setLogicalLocation(cellLocation); | 1712     cell->setLogicalLocation(cellLocation); | 
| 1703     view()->addLayoutDelta(oldCellLocation - cell->location()); | 1713     view()->addLayoutDelta(oldCellLocation - cell->location()); | 
| 1704 } | 1714 } | 
| 1705 | 1715 | 
| 1706 } // namespace WebCore | 1716 } // namespace WebCore | 
| OLD | NEW | 
|---|