Index: Source/core/layout/LayoutInline.cpp |
diff --git a/Source/core/layout/LayoutInline.cpp b/Source/core/layout/LayoutInline.cpp |
index 5abf88d5da1e19e4388cb66c7a8d6f1c6e07bb84..e3044721f6f9e24785264a853c24c927b1262ad4 100644 |
--- a/Source/core/layout/LayoutInline.cpp |
+++ b/Source/core/layout/LayoutInline.cpp |
@@ -1378,16 +1378,18 @@ public: |
void LayoutInline::addOutlineRects(Vector<LayoutRect>& rects, const LayoutPoint& additionalOffset) const |
{ |
- // Add line boxes only if this object is the first object of addOutlineRects(). |
- // Otherwise the parent (LayoutBlockFlow or LayoutInline) should have added line box rects |
- // covering those of this object. |
- if (rects.isEmpty()) { |
chrishtr
2015/08/07 17:08:40
I don't quite get yet why the new version avoids t
Xianzhu
2015/08/07 17:18:49
The duplication problem is about LayoutBlocks with
|
- AbsoluteLayoutRectsIgnoringEmptyRectsGeneratorContext context(rects, additionalOffset); |
- generateLineBoxRects(context); |
- } |
- |
+ AbsoluteLayoutRectsIgnoringEmptyRectsGeneratorContext context(rects, additionalOffset); |
+ generateLineBoxRects(context); |
+ addOutlineRectsForChildrenAndContinuations(rects, additionalOffset); |
+} |
+void LayoutInline::addOutlineRectsForChildrenAndContinuations(Vector<LayoutRect>& rects, const LayoutPoint& additionalOffset) const |
+{ |
addOutlineRectsForNormalChildren(rects, additionalOffset); |
+ addOutlineRectsForContinuations(rects, additionalOffset); |
+} |
+void LayoutInline::addOutlineRectsForContinuations(Vector<LayoutRect>& rects, const LayoutPoint& additionalOffset) const |
+{ |
if (LayoutBoxModelObject* continuation = this->continuation()) { |
if (continuation->isInline()) |
continuation->addOutlineRects(rects, additionalOffset + (continuation->containingBlock()->location() - containingBlock()->location())); |