Index: Source/core/layout/LayoutFlowThread.cpp |
diff --git a/Source/core/layout/LayoutFlowThread.cpp b/Source/core/layout/LayoutFlowThread.cpp |
index 48f267bb8bc4ffa8c5c086f85bf2287c905dc1d6..7f08161e9b18ea818d91b9c5b6a1aacda78999e5 100644 |
--- a/Source/core/layout/LayoutFlowThread.cpp |
+++ b/Source/core/layout/LayoutFlowThread.cpp |
@@ -96,7 +96,12 @@ void LayoutFlowThread::validateRegions() |
void LayoutFlowThread::mapRectToPaintInvalidationBacking(const LayoutLayerModelObject* paintInvalidationContainer, LayoutRect& rect, const PaintInvalidationState* paintInvalidationState) const |
{ |
ASSERT(paintInvalidationContainer != this); // A flow thread should never be an invalidation container. |
+ // |rect| is a layout rectangle, where the block direction coordinate is flipped for writing |
+ // mode. fragmentsBoundingBox(), on the other hand, works on physical rectangles, so we need to |
+ // flip the rectangle before and after calling it. |
+ flipForWritingMode(rect); |
rect = fragmentsBoundingBox(rect); |
+ flipForWritingMode(rect); |
dsinclair
2015/02/18 21:00:29
I'm not sure I understand why this works. When we
mstensho (USE GERRIT)
2015/02/18 22:25:41
Yes, except that you have a fragmentsBoundingBox()
|
RenderBlockFlow::mapRectToPaintInvalidationBacking(paintInvalidationContainer, rect, paintInvalidationState); |
} |