| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights
reserved. | 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights
reserved. |
| 3 * | 3 * |
| 4 * Portions are Copyright (C) 1998 Netscape Communications Corporation. | 4 * Portions are Copyright (C) 1998 Netscape Communications Corporation. |
| 5 * | 5 * |
| 6 * Other contributors: | 6 * Other contributors: |
| 7 * Robert O'Callahan <roc+@cs.cmu.edu> | 7 * Robert O'Callahan <roc+@cs.cmu.edu> |
| 8 * David Baron <dbaron@fas.harvard.edu> | 8 * David Baron <dbaron@fas.harvard.edu> |
| 9 * Christian Biesinger <cbiesinger@web.de> | 9 * Christian Biesinger <cbiesinger@web.de> |
| 10 * Randall Jesup <rjesup@wgate.com> | 10 * Randall Jesup <rjesup@wgate.com> |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 170 layer->m_hasSelfPaintingLayerDescendantDirty = true; | 170 layer->m_hasSelfPaintingLayerDescendantDirty = true; |
| 171 // If we have reached a self-painting layer, we know our parent should h
ave a self-painting descendant | 171 // If we have reached a self-painting layer, we know our parent should h
ave a self-painting descendant |
| 172 // in this case, there is no need to dirty our ancestors further. | 172 // in this case, there is no need to dirty our ancestors further. |
| 173 if (layer->isSelfPaintingLayer()) { | 173 if (layer->isSelfPaintingLayer()) { |
| 174 ASSERT(!parent() || parent()->m_hasSelfPaintingLayerDescendantDirty
|| parent()->m_hasSelfPaintingLayerDescendant); | 174 ASSERT(!parent() || parent()->m_hasSelfPaintingLayerDescendantDirty
|| parent()->m_hasSelfPaintingLayerDescendant); |
| 175 break; | 175 break; |
| 176 } | 176 } |
| 177 } | 177 } |
| 178 } | 178 } |
| 179 | 179 |
| 180 bool RenderLayer::scrollsWithRespectTo(const RenderLayer* other) const | |
| 181 { | |
| 182 return ancestorScrollingLayer() != other->ancestorScrollingLayer(); | |
| 183 } | |
| 184 | |
| 185 void RenderLayer::updateTransformationMatrix() | 180 void RenderLayer::updateTransformationMatrix() |
| 186 { | 181 { |
| 187 if (m_transform) { | 182 if (m_transform) { |
| 188 RenderBox* box = renderBox(); | 183 RenderBox* box = renderBox(); |
| 189 ASSERT(box); | 184 ASSERT(box); |
| 190 m_transform->makeIdentity(); | 185 m_transform->makeIdentity(); |
| 191 box->style()->applyTransform(*m_transform, box->pixelSnappedBorderBoxRec
t().size(), RenderStyle::IncludeTransformOrigin); | 186 box->style()->applyTransform(*m_transform, box->pixelSnappedBorderBoxRec
t().size(), RenderStyle::IncludeTransformOrigin); |
| 192 makeMatrixRenderable(*m_transform); | 187 makeMatrixRenderable(*m_transform); |
| 193 } | 188 } |
| 194 } | 189 } |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 354 localPoint += toRenderBox(curr)->locationOffset(); | 349 localPoint += toRenderBox(curr)->locationOffset(); |
| 355 } | 350 } |
| 356 curr = curr->parent(); | 351 curr = curr->parent(); |
| 357 } | 352 } |
| 358 } | 353 } |
| 359 | 354 |
| 360 // Subtract our parent's scroll offset. | 355 // Subtract our parent's scroll offset. |
| 361 if (renderer()->isOutOfFlowPositioned() && enclosingPositionedAncestor()) { | 356 if (renderer()->isOutOfFlowPositioned() && enclosingPositionedAncestor()) { |
| 362 RenderLayer* positionedParent = enclosingPositionedAncestor(); | 357 RenderLayer* positionedParent = enclosingPositionedAncestor(); |
| 363 | 358 |
| 364 // For positioned layers, we subtract out the enclosing positioned layer
's scroll offset. | |
| 365 if (positionedParent->renderer()->hasOverflowClip()) { | |
| 366 LayoutSize offset = positionedParent->renderBox()->scrolledContentOf
fset(); | |
| 367 localPoint -= offset; | |
| 368 } | |
| 369 | |
| 370 if (positionedParent->renderer()->isRelPositioned() && positionedParent-
>renderer()->isRenderInline()) { | 359 if (positionedParent->renderer()->isRelPositioned() && positionedParent-
>renderer()->isRenderInline()) { |
| 371 LayoutSize offset = toRenderInline(positionedParent->renderer())->of
fsetForInFlowPositionedInline(*toRenderBox(renderer())); | 360 LayoutSize offset = toRenderInline(positionedParent->renderer())->of
fsetForInFlowPositionedInline(*toRenderBox(renderer())); |
| 372 localPoint += offset; | 361 localPoint += offset; |
| 373 } | 362 } |
| 374 } else if (parent()) { | |
| 375 if (parent()->renderer()->hasOverflowClip()) { | |
| 376 IntSize scrollOffset = parent()->renderBox()->scrolledContentOffset(
); | |
| 377 localPoint -= scrollOffset; | |
| 378 } | |
| 379 } | 363 } |
| 380 | 364 |
| 381 localPoint.move(offsetForInFlowPosition()); | 365 localPoint.move(offsetForInFlowPosition()); |
| 382 | 366 |
| 383 // FIXME: We'd really like to just get rid of the concept of a layer rectang
le and rely on the renderers. | 367 // FIXME: We'd really like to just get rid of the concept of a layer rectang
le and rely on the renderers. |
| 384 localPoint -= inlineBoundingBoxOffset; | 368 localPoint -= inlineBoundingBoxOffset; |
| 385 | 369 |
| 386 return localPoint; | 370 return localPoint; |
| 387 } | 371 } |
| 388 | 372 |
| (...skipping 1394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1783 } | 1767 } |
| 1784 } | 1768 } |
| 1785 | 1769 |
| 1786 void showLayerTree(const blink::RenderObject* renderer) | 1770 void showLayerTree(const blink::RenderObject* renderer) |
| 1787 { | 1771 { |
| 1788 if (!renderer) | 1772 if (!renderer) |
| 1789 return; | 1773 return; |
| 1790 showLayerTree(renderer->enclosingLayer()); | 1774 showLayerTree(renderer->enclosingLayer()); |
| 1791 } | 1775 } |
| 1792 #endif | 1776 #endif |
| OLD | NEW |