| Index: third_party/WebKit/Source/core/layout/LayoutObject.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/LayoutObject.cpp b/third_party/WebKit/Source/core/layout/LayoutObject.cpp
|
| index d18a8bdfec657ca4677d650192fcf9a19d44e955..92c9813f5404c86551422afd445220ac62b121ef 100644
|
| --- a/third_party/WebKit/Source/core/layout/LayoutObject.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/LayoutObject.cpp
|
| @@ -1845,12 +1845,13 @@ void LayoutObject::setPseudoStyle(PassRefPtr<ComputedStyle> pseudoStyle)
|
| void LayoutObject::firstLineStyleDidChange(const ComputedStyle& oldStyle, const ComputedStyle& newStyle)
|
| {
|
| StyleDifference diff = oldStyle.visualInvalidationDiff(newStyle);
|
| - if (diff.hasDifference()) {
|
| - // TODO(rune@opera.com): We should use the diff to determine whether a repaint vs. layout
|
| - // is needed, but for now just assume a layout will be required. The diff code
|
| - // in LayoutObject::setStyle would need to be factored out so that it could be reused.
|
| - setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation(LayoutInvalidationReason::StyleChange);
|
| +
|
| + if (diff.needsPaintInvalidation() || diff.textDecorationOrColorChanged()) {
|
| + setShouldDoFullPaintInvalidation();
|
| + invalidateDisplayItemClientsOfFirstLine();
|
| }
|
| + if (diff.needsLayout())
|
| + setNeedsLayoutAndPrefWidthsRecalc(LayoutInvalidationReason::StyleChange);
|
| }
|
|
|
| void LayoutObject::markContainingBlocksForOverflowRecalc()
|
|
|