| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) | 4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) |
| 5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) | 5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) |
| 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv
ed. | 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv
ed. |
| 7 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. | 7 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. |
| 8 * | 8 * |
| 9 * This library is free software; you can redistribute it and/or | 9 * This library is free software; you can redistribute it and/or |
| 10 * modify it under the terms of the GNU Library General Public | 10 * modify it under the terms of the GNU Library General Public |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 139 } | 139 } |
| 140 | 140 |
| 141 void RenderBox::styleWillChange(StyleDifference diff, const RenderStyle& newStyl
e) | 141 void RenderBox::styleWillChange(StyleDifference diff, const RenderStyle& newStyl
e) |
| 142 { | 142 { |
| 143 RenderStyle* oldStyle = style(); | 143 RenderStyle* oldStyle = style(); |
| 144 if (oldStyle) { | 144 if (oldStyle) { |
| 145 // The background of the root element or the body element could propagat
e up to | 145 // The background of the root element or the body element could propagat
e up to |
| 146 // the canvas. Just dirty the entire canvas when our style changes subst
antially. | 146 // the canvas. Just dirty the entire canvas when our style changes subst
antially. |
| 147 if ((diff.needsPaintInvalidation() || diff.needsLayout()) && node() | 147 if ((diff.needsPaintInvalidation() || diff.needsLayout()) && node() |
| 148 && (isHTMLHtmlElement(*node()) || isHTMLBodyElement(*node()))) { | 148 && (isHTMLHtmlElement(*node()) || isHTMLBodyElement(*node()))) { |
| 149 view()->paintInvalidationForWholeRenderer(); | 149 view()->setShouldDoFullPaintInvalidation(true); |
| 150 | 150 |
| 151 if (oldStyle->hasEntirelyFixedBackground() != newStyle.hasEntirelyFi
xedBackground()) | 151 if (oldStyle->hasEntirelyFixedBackground() != newStyle.hasEntirelyFi
xedBackground()) |
| 152 view()->compositor()->setNeedsUpdateFixedBackground(); | 152 view()->compositor()->setNeedsUpdateFixedBackground(); |
| 153 } | 153 } |
| 154 | 154 |
| 155 // When a layout hint happens and an object's position style changes, we
have to do a layout | 155 // When a layout hint happens and an object's position style changes, we
have to do a layout |
| 156 // to dirty the render tree using the old position value now. | 156 // to dirty the render tree using the old position value now. |
| 157 if (diff.needsFullLayout() && parent() && oldStyle->position() != newSty
le.position()) { | 157 if (diff.needsFullLayout() && parent() && oldStyle->position() != newSty
le.position()) { |
| 158 markContainingBlocksForLayout(); | 158 markContainingBlocksForLayout(); |
| 159 if (oldStyle->position() == StaticPosition) | 159 if (oldStyle->position() == StaticPosition) |
| 160 paintInvalidationForWholeRenderer(); | 160 setShouldDoFullPaintInvalidation(true); |
| 161 else if (newStyle.hasOutOfFlowPosition()) | 161 else if (newStyle.hasOutOfFlowPosition()) |
| 162 parent()->setChildNeedsLayout(); | 162 parent()->setChildNeedsLayout(); |
| 163 if (isFloating() && !isOutOfFlowPositioned() && newStyle.hasOutOfFlo
wPosition()) | 163 if (isFloating() && !isOutOfFlowPositioned() && newStyle.hasOutOfFlo
wPosition()) |
| 164 removeFloatingOrPositionedChildFromBlockLists(); | 164 removeFloatingOrPositionedChildFromBlockLists(); |
| 165 } | 165 } |
| 166 // FIXME: This branch runs when !oldStyle, which means that layout was never
called | 166 // FIXME: This branch runs when !oldStyle, which means that layout was never
called |
| 167 // so what's the point in invalidating the whole view that we never painted? | 167 // so what's the point in invalidating the whole view that we never painted? |
| 168 } else if (isBody()) { | 168 } else if (isBody()) { |
| 169 view()->paintInvalidationForWholeRenderer(); | 169 view()->setShouldDoFullPaintInvalidation(true); |
| 170 } | 170 } |
| 171 | 171 |
| 172 RenderBoxModelObject::styleWillChange(diff, newStyle); | 172 RenderBoxModelObject::styleWillChange(diff, newStyle); |
| 173 } | 173 } |
| 174 | 174 |
| 175 void RenderBox::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle
) | 175 void RenderBox::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle
) |
| 176 { | 176 { |
| 177 // Horizontal writing mode definition is updated in RenderBoxModelObject::up
dateFromStyle, | 177 // Horizontal writing mode definition is updated in RenderBoxModelObject::up
dateFromStyle, |
| 178 // (as part of the RenderBoxModelObject::styleDidChange call below). So, we
can safely cache the horizontal | 178 // (as part of the RenderBoxModelObject::styleDidChange call below). So, we
can safely cache the horizontal |
| 179 // writing mode value before style change here. | 179 // writing mode value before style change here. |
| (...skipping 1284 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1464 | 1464 |
| 1465 void RenderBox::imageChanged(WrappedImagePtr image, const IntRect*) | 1465 void RenderBox::imageChanged(WrappedImagePtr image, const IntRect*) |
| 1466 { | 1466 { |
| 1467 if (!parent()) | 1467 if (!parent()) |
| 1468 return; | 1468 return; |
| 1469 | 1469 |
| 1470 AllowPaintInvalidationScope scoper(frameView()); | 1470 AllowPaintInvalidationScope scoper(frameView()); |
| 1471 | 1471 |
| 1472 if ((style()->borderImage().image() && style()->borderImage().image()->data(
) == image) || | 1472 if ((style()->borderImage().image() && style()->borderImage().image()->data(
) == image) || |
| 1473 (style()->maskBoxImage().image() && style()->maskBoxImage().image()->dat
a() == image)) { | 1473 (style()->maskBoxImage().image() && style()->maskBoxImage().image()->dat
a() == image)) { |
| 1474 paintInvalidationForWholeRenderer(); | 1474 setShouldDoFullPaintInvalidation(true); |
| 1475 return; | 1475 return; |
| 1476 } | 1476 } |
| 1477 | 1477 |
| 1478 ShapeValue* shapeOutsideValue = style()->shapeOutside(); | 1478 ShapeValue* shapeOutsideValue = style()->shapeOutside(); |
| 1479 if (!frameView()->isInPerformLayout() && isFloating() && shapeOutsideValue &
& shapeOutsideValue->image() && shapeOutsideValue->image()->data() == image) { | 1479 if (!frameView()->isInPerformLayout() && isFloating() && shapeOutsideValue &
& shapeOutsideValue->image() && shapeOutsideValue->image()->data() == image) { |
| 1480 ShapeOutsideInfo::ensureInfo(*this).markShapeAsDirty(); | 1480 ShapeOutsideInfo::ensureInfo(*this).markShapeAsDirty(); |
| 1481 markShapeOutsideDependentsForLayout(); | 1481 markShapeOutsideDependentsForLayout(); |
| 1482 } | 1482 } |
| 1483 | 1483 |
| 1484 if (!paintInvalidationLayerRectsForImage(image, style()->backgroundLayers(),
true)) | 1484 if (!paintInvalidationLayerRectsForImage(image, style()->backgroundLayers(),
true)) |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1516 layerRenderer = this; | 1516 layerRenderer = this; |
| 1517 rendererRect = borderBoxRect(); | 1517 rendererRect = borderBoxRect(); |
| 1518 } | 1518 } |
| 1519 } | 1519 } |
| 1520 | 1520 |
| 1521 BackgroundImageGeometry geometry; | 1521 BackgroundImageGeometry geometry; |
| 1522 layerRenderer->calculateBackgroundImageGeometry(0, *curLayer, render
erRect, geometry); | 1522 layerRenderer->calculateBackgroundImageGeometry(0, *curLayer, render
erRect, geometry); |
| 1523 if (geometry.hasNonLocalGeometry()) { | 1523 if (geometry.hasNonLocalGeometry()) { |
| 1524 // Rather than incur the costs of computing the paintContainer f
or renderers with fixed backgrounds | 1524 // Rather than incur the costs of computing the paintContainer f
or renderers with fixed backgrounds |
| 1525 // in order to get the right destRect, just issue paint invalida
tions for the entire renderer. | 1525 // in order to get the right destRect, just issue paint invalida
tions for the entire renderer. |
| 1526 layerRenderer->paintInvalidationForWholeRenderer(); | 1526 layerRenderer->setShouldDoFullPaintInvalidation(true); |
| 1527 return true; | 1527 return true; |
| 1528 } | 1528 } |
| 1529 | 1529 |
| 1530 layerRenderer->invalidatePaintRectangle(geometry.destRect()); | 1530 layerRenderer->invalidatePaintRectangle(geometry.destRect()); |
| 1531 if (geometry.destRect() == rendererRect) | 1531 if (geometry.destRect() == rendererRect) |
| 1532 return true; | 1532 return true; |
| 1533 } | 1533 } |
| 1534 } | 1534 } |
| 1535 return false; | 1535 return false; |
| 1536 } | 1536 } |
| (...skipping 3159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4696 RenderBox::BoxDecorationData::BoxDecorationData(const RenderStyle& style) | 4696 RenderBox::BoxDecorationData::BoxDecorationData(const RenderStyle& style) |
| 4697 { | 4697 { |
| 4698 backgroundColor = style.visitedDependentColor(CSSPropertyBackgroundColor); | 4698 backgroundColor = style.visitedDependentColor(CSSPropertyBackgroundColor); |
| 4699 hasBackground = backgroundColor.alpha() || style.hasBackgroundImage(); | 4699 hasBackground = backgroundColor.alpha() || style.hasBackgroundImage(); |
| 4700 ASSERT(hasBackground == style.hasBackground()); | 4700 ASSERT(hasBackground == style.hasBackground()); |
| 4701 hasBorder = style.hasBorder(); | 4701 hasBorder = style.hasBorder(); |
| 4702 hasAppearance = style.hasAppearance(); | 4702 hasAppearance = style.hasAppearance(); |
| 4703 } | 4703 } |
| 4704 | 4704 |
| 4705 } // namespace blink | 4705 } // namespace blink |
| OLD | NEW |