Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(151)

Side by Side Diff: Source/core/rendering/RenderTableSection.cpp

Issue 673533002: Table rows are not totally invalidated after r170349 (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Update first comment after Dan's review (forgot to do it) Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/rendering/RenderTableRow.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 937 matching lines...) Expand 10 before | Expand all | Expand 10 after
948 m_overflowingCells.clear(); 948 m_overflowingCells.clear();
949 m_forceSlowPaintPathWithOverflowingCell = false; 949 m_forceSlowPaintPathWithOverflowingCell = false;
950 950
951 int vspacing = table()->vBorderSpacing(); 951 int vspacing = table()->vBorderSpacing();
952 unsigned nEffCols = table()->numEffCols(); 952 unsigned nEffCols = table()->numEffCols();
953 953
954 LayoutState state(*this, locationOffset()); 954 LayoutState state(*this, locationOffset());
955 955
956 for (unsigned r = 0; r < totalRows; r++) { 956 for (unsigned r = 0; r < totalRows; r++) {
957 // Set the row's x/y position and width/height. 957 // Set the row's x/y position and width/height.
958 if (RenderTableRow* rowRenderer = m_grid[r].rowRenderer) { 958 RenderTableRow* rowRenderer = m_grid[r].rowRenderer;
959 if (rowRenderer) {
959 rowRenderer->setLocation(LayoutPoint(0, m_rowPos[r])); 960 rowRenderer->setLocation(LayoutPoint(0, m_rowPos[r]));
960 rowRenderer->setLogicalWidth(logicalWidth()); 961 rowRenderer->setLogicalWidth(logicalWidth());
961 rowRenderer->setLogicalHeight(m_rowPos[r + 1] - m_rowPos[r] - vspaci ng); 962 rowRenderer->setLogicalHeight(m_rowPos[r + 1] - m_rowPos[r] - vspaci ng);
962 rowRenderer->updateLayerTransformAfterLayout(); 963 rowRenderer->updateLayerTransformAfterLayout();
963 rowRenderer->clearAllOverflows(); 964 rowRenderer->clearAllOverflows();
964 rowRenderer->addVisualEffectOverflow(); 965 rowRenderer->addVisualEffectOverflow();
965 } 966 }
966 967
967 int rowHeightIncreaseForPagination = 0; 968 int rowHeightIncreaseForPagination = 0;
968 969
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
1046 // FIXME: Pagination might have made us change size. For now jus t shrink or grow the cell to fit without doing a relayout. 1047 // FIXME: Pagination might have made us change size. For now jus t shrink or grow the cell to fit without doing a relayout.
1047 // We'll also do a basic increase of the row height to accommoda te the cell if it's bigger, but this isn't quite right 1048 // We'll also do a basic increase of the row height to accommoda te the cell if it's bigger, but this isn't quite right
1048 // either. It's at least stable though and won't result in an in finite # of relayouts that may never stabilize. 1049 // either. It's at least stable though and won't result in an in finite # of relayouts that may never stabilize.
1049 LayoutUnit oldLogicalHeight = cell->logicalHeight(); 1050 LayoutUnit oldLogicalHeight = cell->logicalHeight();
1050 if (oldLogicalHeight > rHeight) 1051 if (oldLogicalHeight > rHeight)
1051 rowHeightIncreaseForPagination = std::max<int>(rowHeightIncr easeForPagination, oldLogicalHeight - rHeight); 1052 rowHeightIncreaseForPagination = std::max<int>(rowHeightIncr easeForPagination, oldLogicalHeight - rHeight);
1052 cell->setLogicalHeight(rHeight); 1053 cell->setLogicalHeight(rHeight);
1053 cell->computeOverflow(oldLogicalHeight, false); 1054 cell->computeOverflow(oldLogicalHeight, false);
1054 } 1055 }
1055 1056
1057 if (rowRenderer)
1058 rowRenderer->addOverflowFromCell(cell);
1059
1056 LayoutSize childOffset(cell->location() - oldCellRect.location()); 1060 LayoutSize childOffset(cell->location() - oldCellRect.location());
1057 if (childOffset.width() || childOffset.height()) { 1061 if (childOffset.width() || childOffset.height()) {
1058 // If the child moved, we have to issue paint invalidations to i t as well as any floating/positioned 1062 // If the child moved, we have to issue paint invalidations to i t as well as any floating/positioned
1059 // descendants. An exception is if we need a layout. In this cas e, we know we're going to 1063 // descendants. An exception is if we need a layout. In this cas e, we know we're going to
1060 // issue paint invalidations ourselves (and the child) anyway. 1064 // issue paint invalidations ourselves (and the child) anyway.
1061 if (!table()->selfNeedsLayout()) 1065 if (!table()->selfNeedsLayout())
1062 cell->setMayNeedPaintInvalidation(true); 1066 cell->setMayNeedPaintInvalidation(true);
1063 } 1067 }
1064 } 1068 }
1065 if (rowHeightIncreaseForPagination) { 1069 if (rowHeightIncreaseForPagination) {
(...skipping 544 matching lines...) Expand 10 before | Expand all | Expand 10 after
1610 // FIXME: The table's direction should determine our row's direction, not th e section's (see bug 96691). 1614 // FIXME: The table's direction should determine our row's direction, not th e section's (see bug 96691).
1611 if (!style()->isLeftToRightDirection()) 1615 if (!style()->isLeftToRightDirection())
1612 cellLocation.setX(table()->columnPositions()[table()->numEffCols()] - ta ble()->columnPositions()[table()->colToEffCol(cell->col() + cell->colSpan())] + horizontalBorderSpacing); 1616 cellLocation.setX(table()->columnPositions()[table()->numEffCols()] - ta ble()->columnPositions()[table()->colToEffCol(cell->col() + cell->colSpan())] + horizontalBorderSpacing);
1613 else 1617 else
1614 cellLocation.setX(table()->columnPositions()[effectiveColumn] + horizont alBorderSpacing); 1618 cellLocation.setX(table()->columnPositions()[effectiveColumn] + horizont alBorderSpacing);
1615 1619
1616 cell->setLogicalLocation(cellLocation); 1620 cell->setLogicalLocation(cellLocation);
1617 } 1621 }
1618 1622
1619 } // namespace blink 1623 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/rendering/RenderTableRow.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698