| Index: Source/core/rendering/RenderLayer.cpp
|
| diff --git a/Source/core/rendering/RenderLayer.cpp b/Source/core/rendering/RenderLayer.cpp
|
| index 99e2c5dddab1c8fa92c297fa344fa40f9dda6a6a..0be34254a2b9fd8e737e4074ea634245589b50ba 100644
|
| --- a/Source/core/rendering/RenderLayer.cpp
|
| +++ b/Source/core/rendering/RenderLayer.cpp
|
| @@ -2049,7 +2049,7 @@ RenderLayer* RenderLayer::hitTestChildLayerColumns(RenderLayer* childLayer, Rend
|
| for (i = 0; i < colCount; i++) {
|
| LayoutRect colRect = columnBlock->columnRectAt(colInfo, i);
|
| LayoutUnit blockDelta = (isHorizontal ? colRect.height() : colRect.width());
|
| - if (columnBlock->style()->isFlippedBlocksWritingMode())
|
| + if (columnBlock->style()->slowIsFlippedBlocksWritingMode())
|
| currLogicalTopOffset += blockDelta;
|
| else
|
| currLogicalTopOffset -= blockDelta;
|
| @@ -2060,7 +2060,7 @@ RenderLayer* RenderLayer::hitTestChildLayerColumns(RenderLayer* childLayer, Rend
|
| columnBlock->flipForWritingMode(colRect);
|
| LayoutUnit currLogicalLeftOffset = (isHorizontal ? colRect.x() : colRect.y()) - logicalLeft;
|
| LayoutUnit blockDelta = (isHorizontal ? colRect.height() : colRect.width());
|
| - if (columnBlock->style()->isFlippedBlocksWritingMode())
|
| + if (columnBlock->style()->slowIsFlippedBlocksWritingMode())
|
| currLogicalTopOffset -= blockDelta;
|
| else
|
| currLogicalTopOffset += blockDelta;
|
| @@ -2249,19 +2249,22 @@ LayoutRect RenderLayer::logicalBoundingBox() const
|
| return result;
|
| }
|
|
|
| -LayoutRect RenderLayer::flippedLogicalBoundingBox() const
|
| +static inline LayoutRect flippedLogicalBoundingBox(LayoutRect boundingBox, RenderObject* renderer)
|
| {
|
| - LayoutRect result = logicalBoundingBox();
|
| - if (m_renderer->isBox())
|
| - renderBox()->flipForWritingMode(result);
|
| + if (!UNLIKELY(renderer->document().containsAnyRareWritingMode()))
|
| + return boundingBox;
|
| +
|
| + LayoutRect result = boundingBox;
|
| + if (renderer->isBox())
|
| + toRenderBox(renderer)->flipForWritingMode(result);
|
| else
|
| - m_renderer->containingBlock()->flipForWritingMode(result);
|
| + renderer->containingBlock()->flipForWritingMode(result);
|
| return result;
|
| }
|
|
|
| LayoutRect RenderLayer::physicalBoundingBox(const RenderLayer* ancestorLayer, const LayoutPoint* offsetFromRoot) const
|
| {
|
| - LayoutRect result = flippedLogicalBoundingBox();
|
| + LayoutRect result = flippedLogicalBoundingBox(logicalBoundingBox(), renderer());
|
| if (offsetFromRoot)
|
| result.moveBy(*offsetFromRoot);
|
| else
|
| @@ -2274,11 +2277,16 @@ LayoutRect RenderLayer::fragmentsBoundingBox(const RenderLayer* ancestorLayer) c
|
| if (!enclosingPaginationLayer())
|
| return physicalBoundingBox(ancestorLayer);
|
|
|
| - LayoutRect result = flippedLogicalBoundingBox();
|
| + LayoutRect result = flippedLogicalBoundingBox(logicalBoundingBox(), renderer());
|
| convertFromFlowThreadToVisualBoundingBoxInAncestor(this, ancestorLayer, result);
|
| return result;
|
| }
|
|
|
| +LayoutRect RenderLayer::boundingBoxForCompositingOverlapTest() const
|
| +{
|
| + return overlapBoundsIncludeChildren() ? boundingBoxForCompositing() : flippedLogicalBoundingBox(logicalBoundingBox(), renderer());
|
| +}
|
| +
|
| static void expandRectForReflectionAndStackingChildren(const RenderLayer* ancestorLayer, RenderLayer::CalculateBoundsOptions options, LayoutRect& result)
|
| {
|
| if (ancestorLayer->reflectionInfo() && !ancestorLayer->reflectionInfo()->reflectionLayer()->hasCompositedLayerMapping())
|
|
|