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) 2000 Dirk Mueller (mueller@kde.org) | 4 * (C) 2000 Dirk Mueller (mueller@kde.org) |
5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) | 5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) |
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv
ed. | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv
ed. |
7 * Copyright (C) 2009 Google Inc. All rights reserved. | 7 * Copyright (C) 2009 Google Inc. All rights reserved. |
8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) | 8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) |
9 * | 9 * |
10 * This library is free software; you can redistribute it and/or | 10 * This library is free software; you can redistribute it and/or |
(...skipping 597 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
608 // Step 4: If |checkParent| is set, climb up to our parent and check its sib
lings that | 608 // Step 4: If |checkParent| is set, climb up to our parent and check its sib
lings that |
609 // follow us to see if we can locate a layer. | 609 // follow us to see if we can locate a layer. |
610 if (checkParent && parent()) | 610 if (checkParent && parent()) |
611 return parent()->findNextLayer(parentLayer, this, true); | 611 return parent()->findNextLayer(parentLayer, this, true); |
612 | 612 |
613 return nullptr; | 613 return nullptr; |
614 } | 614 } |
615 | 615 |
616 PaintLayer* LayoutObject::enclosingLayer() const | 616 PaintLayer* LayoutObject::enclosingLayer() const |
617 { | 617 { |
618 for (const LayoutObject* current = this; current; current = current->parent(
)) { | 618 for (const LayoutObject* current = this; current; current = current->isColum
nSpanAll() ? current->spannerPlaceholder() : current->parent()) { |
619 if (current->hasLayer()) | 619 if (current->hasLayer()) |
620 return toLayoutBoxModelObject(current)->layer(); | 620 return toLayoutBoxModelObject(current)->layer(); |
621 } | 621 } |
622 // FIXME: we should get rid of detached layout subtrees, at which point this
code should | 622 // FIXME: we should get rid of detached layout subtrees, at which point this
code should |
623 // not be reached. crbug.com/411429 | 623 // not be reached. crbug.com/411429 |
624 return nullptr; | 624 return nullptr; |
625 } | 625 } |
626 | 626 |
627 bool LayoutObject::scrollRectToVisible(const LayoutRect& rect, const ScrollAlign
ment& alignX, const ScrollAlignment& alignY, ScrollType scrollType, bool makeVis
ibleInVisualViewport) | 627 bool LayoutObject::scrollRectToVisible(const LayoutRect& rect, const ScrollAlign
ment& alignX, const ScrollAlignment& alignY, ScrollType scrollType, bool makeVis
ibleInVisualViewport) |
628 { | 628 { |
(...skipping 609 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1238 DisableCompositingQueryAsserts disabler; | 1238 DisableCompositingQueryAsserts disabler; |
1239 if (const PaintLayer* paintInvalidationLayer = enclosingLayer->enclosing
LayerForPaintInvalidationCrossingFrameBoundaries()) | 1239 if (const PaintLayer* paintInvalidationLayer = enclosingLayer->enclosing
LayerForPaintInvalidationCrossingFrameBoundaries()) |
1240 paintInvalidationLayer->layoutObject()->invalidateDisplayItemClientO
nBacking(displayItemClient, PaintInvalidationFull); | 1240 paintInvalidationLayer->layoutObject()->invalidateDisplayItemClientO
nBacking(displayItemClient, PaintInvalidationFull); |
1241 enclosingLayer->setNeedsRepaint(); | 1241 enclosingLayer->setNeedsRepaint(); |
1242 } | 1242 } |
1243 } | 1243 } |
1244 | 1244 |
1245 #if ENABLE(ASSERT) | 1245 #if ENABLE(ASSERT) |
1246 static void assertEnclosingSelfPaintingLayerHasSetNeedsRepaint(const LayoutObjec
t& layoutObject) | 1246 static void assertEnclosingSelfPaintingLayerHasSetNeedsRepaint(const LayoutObjec
t& layoutObject) |
1247 { | 1247 { |
1248 PaintLayer* enclosingSelfPaintingLayer = nullptr; | 1248 PaintLayer* enclosingSelfPaintingLayer = layoutObject.enclosingLayer() ? lay
outObject.enclosingLayer()->enclosingSelfPaintingLayer() : nullptr; |
1249 const LayoutObject* curr = &layoutObject; | |
1250 while (curr) { | |
1251 if (curr->hasLayer() && toLayoutBoxModelObject(curr)->hasSelfPaintingLay
er()) { | |
1252 enclosingSelfPaintingLayer = toLayoutBoxModelObject(curr)->layer(); | |
1253 break; | |
1254 } | |
1255 // Multi-column spanner is painted by the layer of the multi-column cont
ainer instead of | |
1256 // its enclosing layer (the layer of the multi-column flow thread). | |
1257 curr = curr->isColumnSpanAll() ? curr->containingBlock() : curr->parent(
); | |
1258 } | |
1259 ASSERT(!enclosingSelfPaintingLayer || enclosingSelfPaintingLayer->needsRepai
nt()); | 1249 ASSERT(!enclosingSelfPaintingLayer || enclosingSelfPaintingLayer->needsRepai
nt()); |
1260 } | 1250 } |
1261 #endif | 1251 #endif |
1262 | 1252 |
1263 void LayoutObject::invalidateDisplayItemClients(const LayoutBoxModelObject& pain
tInvalidationContainer, PaintInvalidationReason invalidationReason) const | 1253 void LayoutObject::invalidateDisplayItemClients(const LayoutBoxModelObject& pain
tInvalidationContainer, PaintInvalidationReason invalidationReason) const |
1264 { | 1254 { |
1265 // It's caller's responsibility to ensure enclosingSelfPaintingLayer's needs
Repaint is set. | 1255 // It's caller's responsibility to ensure enclosingSelfPaintingLayer's needs
Repaint is set. |
1266 // Don't set the flag here because getting enclosingSelfPaintLayer has cost
and the caller can use | 1256 // Don't set the flag here because getting enclosingSelfPaintLayer has cost
and the caller can use |
1267 // various ways (e.g. PaintInvalidatinState::enclosingSelfPaintingLayer()) t
o reduce the cost. | 1257 // various ways (e.g. PaintInvalidatinState::enclosingSelfPaintingLayer()) t
o reduce the cost. |
1268 #if ENABLE(ASSERT) | 1258 #if ENABLE(ASSERT) |
(...skipping 2437 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3706 const blink::LayoutObject* root = object1; | 3696 const blink::LayoutObject* root = object1; |
3707 while (root->parent()) | 3697 while (root->parent()) |
3708 root = root->parent(); | 3698 root = root->parent(); |
3709 root->showLayoutTreeAndMark(object1, "*", object2, "-", 0); | 3699 root->showLayoutTreeAndMark(object1, "*", object2, "-", 0); |
3710 } else { | 3700 } else { |
3711 fprintf(stderr, "Cannot showLayoutTree. Root is (nil)\n"); | 3701 fprintf(stderr, "Cannot showLayoutTree. Root is (nil)\n"); |
3712 } | 3702 } |
3713 } | 3703 } |
3714 | 3704 |
3715 #endif | 3705 #endif |
OLD | NEW |