Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(552)

Unified Diff: Source/core/layout/LayoutInline.cpp

Issue 1280543005: Refactor LayoutInline::addOutlineRects to avoid tricky logic to avoid dups (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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()));
« Source/core/layout/LayoutBoxModelObject.cpp ('K') | « Source/core/layout/LayoutInline.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698