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 Apple Inc. All rights reserved. | 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. |
7 * Copyright (C) 2010 Google Inc. All rights reserved. | 7 * Copyright (C) 2010 Google Inc. 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 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
245 } | 245 } |
246 | 246 |
247 // Fixed-position is painted using transform. In the case that the object | 247 // Fixed-position is painted using transform. In the case that the object |
248 // gets the same layout after changing position property, although no | 248 // gets the same layout after changing position property, although no |
249 // re-raster (rect-based invalidation) is needed, display items should | 249 // re-raster (rect-based invalidation) is needed, display items should |
250 // still update their paint offset. | 250 // still update their paint offset. |
251 if (oldStyle) { | 251 if (oldStyle) { |
252 bool newStyleIsFixedPosition = style()->position() == FixedPosition; | 252 bool newStyleIsFixedPosition = style()->position() == FixedPosition; |
253 bool oldStyleIsFixedPosition = oldStyle->position() == FixedPosition; | 253 bool oldStyleIsFixedPosition = oldStyle->position() == FixedPosition; |
254 if (newStyleIsFixedPosition != oldStyleIsFixedPosition) | 254 if (newStyleIsFixedPosition != oldStyleIsFixedPosition) |
255 invalidateDisplayItemClientsIncludingNonCompositingDescendants(Paint
InvalidationStyleChange); | 255 invalidateDisplayItemClientsIncludingNonCompositingDescendants(nullp
tr, PaintInvalidationStyleChange); |
256 } | 256 } |
257 | 257 |
258 // The used style for body background may change due to computed style chang
e | 258 // The used style for body background may change due to computed style chang
e |
259 // on the document element because of background stealing. | 259 // on the document element because of background stealing. |
260 // Refer to backgroundStolenForBeingBody() and | 260 // Refer to backgroundStolenForBeingBody() and |
261 // http://www.w3.org/TR/css3-background/#body-background for more info. | 261 // http://www.w3.org/TR/css3-background/#body-background for more info. |
262 if (isDocumentElement()) { | 262 if (isDocumentElement()) { |
263 HTMLBodyElement* body = document().firstBodyElement(); | 263 HTMLBodyElement* body = document().firstBodyElement(); |
264 LayoutObject* bodyLayout = body ? body->layoutObject() : nullptr; | 264 LayoutObject* bodyLayout = body ? body->layoutObject() : nullptr; |
265 if (bodyLayout && bodyLayout->isBoxModelObject()) { | 265 if (bodyLayout && bodyLayout->isBoxModelObject()) { |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
432 } else if (object.compositedScrollsWithRespectTo(*this)) { | 432 } else if (object.compositedScrollsWithRespectTo(*this)) { |
433 layer()->compositedLayerMapping()->setScrollingContentsNeedDisplayInRect
(r, invalidationReason, object); | 433 layer()->compositedLayerMapping()->setScrollingContentsNeedDisplayInRect
(r, invalidationReason, object); |
434 } else if (usesCompositedScrolling()) { | 434 } else if (usesCompositedScrolling()) { |
435 layer()->compositedLayerMapping()->setNonScrollingContentsNeedDisplayInR
ect(r, invalidationReason, object); | 435 layer()->compositedLayerMapping()->setNonScrollingContentsNeedDisplayInR
ect(r, invalidationReason, object); |
436 } else { | 436 } else { |
437 // Otherwise invalidate everything. | 437 // Otherwise invalidate everything. |
438 layer()->compositedLayerMapping()->setContentsNeedDisplayInRect(r, inval
idationReason, object); | 438 layer()->compositedLayerMapping()->setContentsNeedDisplayInRect(r, inval
idationReason, object); |
439 } | 439 } |
440 } | 440 } |
441 | 441 |
| 442 void LayoutBoxModelObject::invalidateDisplayItemClientOnBacking(const DisplayIte
mClient& displayItemClient, PaintInvalidationReason invalidationReason, const La
youtObject* layoutObject) const |
| 443 { |
| 444 displayItemClient.setDisplayItemsUncached(); |
| 445 |
| 446 // We need to inform the GraphicsLayer about this paint invalidation only wh
en we are tracking |
| 447 // paint invalidation or ENABLE(ASSERT). |
| 448 #if !ENABLE(ASSERT) |
| 449 if (!frameView()->isTrackingPaintInvalidations()) |
| 450 return; |
| 451 #endif |
| 452 |
| 453 if (layer()->groupedMapping()) { |
| 454 if (GraphicsLayer* squashingLayer = layer()->groupedMapping()->squashing
Layer()) |
| 455 squashingLayer->displayItemClientWasInvalidated(displayItemClient, i
nvalidationReason); |
| 456 } else if (CompositedLayerMapping* compositedLayerMapping = layer()->composi
tedLayerMapping()) { |
| 457 if (layoutObject && layoutObject->compositedScrollsWithRespectTo(*this)) |
| 458 compositedLayerMapping->scrollingDisplayItemClientWasInvalidated(dis
playItemClient, invalidationReason); |
| 459 else |
| 460 compositedLayerMapping->displayItemClientWasInvalidated(displayItemC
lient, invalidationReason); |
| 461 } |
| 462 } |
| 463 |
442 void LayoutBoxModelObject::addOutlineRectsForNormalChildren(Vector<LayoutRect>&
rects, const LayoutPoint& additionalOffset, IncludeBlockVisualOverflowOrNot incl
udeBlockOverflows) const | 464 void LayoutBoxModelObject::addOutlineRectsForNormalChildren(Vector<LayoutRect>&
rects, const LayoutPoint& additionalOffset, IncludeBlockVisualOverflowOrNot incl
udeBlockOverflows) const |
443 { | 465 { |
444 for (LayoutObject* child = slowFirstChild(); child; child = child->nextSibli
ng()) { | 466 for (LayoutObject* child = slowFirstChild(); child; child = child->nextSibli
ng()) { |
445 // Outlines of out-of-flow positioned descendants are handled in LayoutB
lock::addOutlineRects(). | 467 // Outlines of out-of-flow positioned descendants are handled in LayoutB
lock::addOutlineRects(). |
446 if (child->isOutOfFlowPositioned()) | 468 if (child->isOutOfFlowPositioned()) |
447 continue; | 469 continue; |
448 | 470 |
449 // Outline of an element continuation or anonymous block continuation is
added when we iterate the continuation chain. | 471 // Outline of an element continuation or anonymous block continuation is
added when we iterate the continuation chain. |
450 // See LayoutBlock::addOutlineRects() and LayoutInline::addOutlineRects(
). | 472 // See LayoutBlock::addOutlineRects() and LayoutInline::addOutlineRects(
). |
451 if (child->isElementContinuation() | 473 if (child->isElementContinuation() |
(...skipping 659 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1111 if (rootElementStyle->hasBackground()) | 1133 if (rootElementStyle->hasBackground()) |
1112 return false; | 1134 return false; |
1113 | 1135 |
1114 if (node() != document().firstBodyElement()) | 1136 if (node() != document().firstBodyElement()) |
1115 return false; | 1137 return false; |
1116 | 1138 |
1117 return true; | 1139 return true; |
1118 } | 1140 } |
1119 | 1141 |
1120 } // namespace blink | 1142 } // namespace blink |
OLD | NEW |