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

Unified Diff: third_party/WebKit/Source/core/layout/LayoutTableRow.cpp

Issue 2013693002: [css-tables] Set table and cell widths dirty when section border changes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: handle case where row is null Created 4 years, 5 months 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/layout/LayoutTableRow.cpp
diff --git a/third_party/WebKit/Source/core/layout/LayoutTableRow.cpp b/third_party/WebKit/Source/core/layout/LayoutTableRow.cpp
index 160e3ebca432e1aed15584bd0cae6caf8128f32d..2d726bcd8ba8adf2aab88a76d8044d237b787290 100644
--- a/third_party/WebKit/Source/core/layout/LayoutTableRow.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutTableRow.cpp
@@ -53,14 +53,6 @@ void LayoutTableRow::willBeRemovedFromTree()
section()->setNeedsCellRecalc();
}
-static bool borderWidthChanged(const ComputedStyle* oldStyle, const ComputedStyle* newStyle)
-{
- return oldStyle->borderLeftWidth() != newStyle->borderLeftWidth()
- || oldStyle->borderTopWidth() != newStyle->borderTopWidth()
- || oldStyle->borderRightWidth() != newStyle->borderRightWidth()
- || oldStyle->borderBottomWidth() != newStyle->borderBottomWidth();
-}
-
void LayoutTableRow::styleDidChange(StyleDifference diff, const ComputedStyle* oldStyle)
{
ASSERT(style()->display() == TABLE_ROW);
@@ -77,13 +69,14 @@ void LayoutTableRow::styleDidChange(StyleDifference diff, const ComputedStyle* o
if (table && !table->selfNeedsLayout() && !table->normalChildNeedsLayout() && oldStyle && oldStyle->border() != style()->border())
table->invalidateCollapsedBorders();
- if (table && oldStyle && diff.needsFullLayout() && needsLayout() && table->collapseBorders() && borderWidthChanged(oldStyle, style())) {
+ if (table && oldStyle && diff.needsFullLayout() && needsLayout() && table->collapseBorders() && oldStyle->border().sizeEquals(style()->border())) {
// If the border width changes on a row, we need to make sure the cells in the row know to lay out again.
// This only happens when borders are collapsed, since they end up affecting the border sides of the cell
// itself.
for (LayoutBox* childBox = firstChildBox(); childBox; childBox = childBox->nextSiblingBox()) {
if (!childBox->isTableCell())
continue;
+ // TODO(dgrogan) Add a layout test showing that setChildNeedsLayout is needed instead of setNeedsLayout.
childBox->setChildNeedsLayout();
childBox->setPreferredLogicalWidthsDirty(MarkOnlyThis);
}

Powered by Google App Engine
This is Rietveld 408576698