Index: Source/core/rendering/RenderBox.cpp |
diff --git a/Source/core/rendering/RenderBox.cpp b/Source/core/rendering/RenderBox.cpp |
index ddc564a6cd30aced7b51ef9f6dcf881dd5ae2be1..e3bc8587d8e937e58c487dca8927ddba1b89a0dc 100644 |
--- a/Source/core/rendering/RenderBox.cpp |
+++ b/Source/core/rendering/RenderBox.cpp |
@@ -1882,8 +1882,18 @@ LayoutSize RenderBox::offsetFromContainer(RenderObject* o, const LayoutPoint& po |
if (offsetDependsOnPoint) |
*offsetDependsOnPoint = true; |
- } else |
+ } else { |
offset += topLeftLocationOffset(); |
+ if (o->isRenderFlowThread()) { |
+ // So far the point has been in flow thread coordinates (i.e. as if everything in |
+ // the fragmentation context lived in one tall single column). Convert it to a |
+ // visual point now. |
+ LayoutPoint pointInContainer = point + offset; |
+ offset += o->columnOffset(pointInContainer); |
+ if (offsetDependsOnPoint) |
+ *offsetDependsOnPoint = true; |
+ } |
+ } |
} |
if (o->hasOverflowClip()) |
@@ -1892,9 +1902,6 @@ LayoutSize RenderBox::offsetFromContainer(RenderObject* o, const LayoutPoint& po |
if (style()->position() == AbsolutePosition && o->isInFlowPositioned() && o->isRenderInline()) |
offset += toRenderInline(o)->offsetForInFlowPositionedInline(*this); |
- if (offsetDependsOnPoint) |
- *offsetDependsOnPoint |= o->isRenderFlowThread(); |
- |
return offset; |
} |