Index: third_party/WebKit/Source/core/layout/LayoutTableCell.cpp |
diff --git a/third_party/WebKit/Source/core/layout/LayoutTableCell.cpp b/third_party/WebKit/Source/core/layout/LayoutTableCell.cpp |
index 1aba9144cdca77bb57d4fc4460bf34f920a5cf4c..3469d4abc189a54d4964cd1e3a3e42f8a862488f 100644 |
--- a/third_party/WebKit/Source/core/layout/LayoutTableCell.cpp |
+++ b/third_party/WebKit/Source/core/layout/LayoutTableCell.cpp |
@@ -387,10 +387,25 @@ void LayoutTableCell::styleDidChange(StyleDifference diff, const ComputedStyle* |
clearIntrinsicPadding(); |
// If border was changed, notify table. |
- if (parent()) { |
- LayoutTable* table = this->table(); |
- if (table && !table->selfNeedsLayout() && !table->normalChildNeedsLayout()&& oldStyle && oldStyle->border() != style()->border()) |
- table->invalidateCollapsedBorders(); |
+ if (!parent()) |
+ return; |
+ LayoutTable* table = this->table(); |
+ if (!table) |
+ return; |
+ if (!table->selfNeedsLayout() && !table->normalChildNeedsLayout()&& oldStyle && oldStyle->border() != style()->border()) |
+ table->invalidateCollapsedBorders(); |
+ |
+ if (LayoutTableBoxComponent::doCellsHaveDirtyWidth(*this, *table, diff, *oldStyle)) { |
+ if (previousCell()) { |
+ // TODO(dgrogan) Add a layout test showing that setChildNeedsLayout is needed instead of setNeedsLayout. |
+ previousCell()->setChildNeedsLayout(); |
+ previousCell()->setPreferredLogicalWidthsDirty(MarkOnlyThis); |
+ } |
+ if (nextCell()) { |
+ // TODO(dgrogan) Add a layout test showing that setChildNeedsLayout is needed instead of setNeedsLayout. |
+ nextCell()->setChildNeedsLayout(); |
+ nextCell()->setPreferredLogicalWidthsDirty(MarkOnlyThis); |
+ } |
} |
} |