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

Side by Side Diff: third_party/WebKit/Source/core/layout/LayoutInline.cpp

Issue 1431183003: Set the correct style on the middle anonymous block in continuations (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Updated Created 5 years, 1 month 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 4 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
5 * 5 *
6 * This library is free software; you can redistribute it and/or 6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public 7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either 8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version. 9 * version 2 of the License, or (at your option) any later version.
10 * 10 *
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
300 { 300 {
301 // Make sure we don't append things after :after-generated content if we hav e it. 301 // Make sure we don't append things after :after-generated content if we hav e it.
302 if (!beforeChild && isAfterContent(lastChild())) 302 if (!beforeChild && isAfterContent(lastChild()))
303 beforeChild = lastChild(); 303 beforeChild = lastChild();
304 304
305 if (!newChild->isInline() && !newChild->isFloatingOrOutOfFlowPositioned()) { 305 if (!newChild->isInline() && !newChild->isFloatingOrOutOfFlowPositioned()) {
306 // We are placing a block inside an inline. We have to perform a split o f this 306 // We are placing a block inside an inline. We have to perform a split o f this
307 // inline into continuations. This involves creating an anonymous block box to hold 307 // inline into continuations. This involves creating an anonymous block box to hold
308 // |newChild|. We then make that block box a continuation of this inlin e. We take all of 308 // |newChild|. We then make that block box a continuation of this inlin e. We take all of
309 // the children after |beforeChild| and put them in a clone of this obje ct. 309 // the children after |beforeChild| and put them in a clone of this obje ct.
310 RefPtr<ComputedStyle> newStyle = ComputedStyle::createAnonymousStyleWith Display(styleRef(), BLOCK); 310 RefPtr<ComputedStyle> newStyle = ComputedStyle::createAnonymousStyleWith Display(containingBlock()->styleRef(), BLOCK);
311 311
312 // If inside an inline affected by in-flow positioning the block needs t o be affected by it too. 312 // If inside an inline affected by in-flow positioning the block needs t o be affected by it too.
313 // Giving the block a layer like this allows it to collect the x/y offse ts from inline parents later. 313 // Giving the block a layer like this allows it to collect the x/y offse ts from inline parents later.
314 if (LayoutObject* positionedAncestor = inFlowPositionedInlineAncestor(th is)) 314 if (LayoutObject* positionedAncestor = inFlowPositionedInlineAncestor(th is))
315 newStyle->setPosition(positionedAncestor->style()->position()); 315 newStyle->setPosition(positionedAncestor->style()->position());
316 316
317 LayoutBlockFlow* newBox = LayoutBlockFlow::createAnonymous(&document()); 317 LayoutBlockFlow* newBox = LayoutBlockFlow::createAnonymous(&document());
318 newBox->setStyle(newStyle.release()); 318 newBox->setStyle(newStyle.release());
319 LayoutBoxModelObject* oldContinuation = continuation(); 319 LayoutBoxModelObject* oldContinuation = continuation();
320 setContinuation(newBox); 320 setContinuation(newBox);
(...skipping 1085 matching lines...) Expand 10 before | Expand all | Expand 10 after
1406 1406
1407 void LayoutInline::invalidateDisplayItemClients(const LayoutBoxModelObject& pain tInvalidationContainer, PaintInvalidationReason invalidationReason, const Layout Rect* paintInvalidationRect) const 1407 void LayoutInline::invalidateDisplayItemClients(const LayoutBoxModelObject& pain tInvalidationContainer, PaintInvalidationReason invalidationReason, const Layout Rect* paintInvalidationRect) const
1408 { 1408 {
1409 LayoutBoxModelObject::invalidateDisplayItemClients(paintInvalidationContaine r, invalidationReason, paintInvalidationRect); 1409 LayoutBoxModelObject::invalidateDisplayItemClients(paintInvalidationContaine r, invalidationReason, paintInvalidationRect);
1410 // TODO(wangxianzhu): Pass current bounds of lineboxes to PaintController. c rbug.com/547119. 1410 // TODO(wangxianzhu): Pass current bounds of lineboxes to PaintController. c rbug.com/547119.
1411 for (InlineFlowBox* box = firstLineBox(); box; box = box->nextLineBox()) 1411 for (InlineFlowBox* box = firstLineBox(); box; box = box->nextLineBox())
1412 paintInvalidationContainer.invalidateDisplayItemClientOnBacking(*box, in validationReason, nullptr); 1412 paintInvalidationContainer.invalidateDisplayItemClientOnBacking(*box, in validationReason, nullptr);
1413 } 1413 }
1414 1414
1415 } // namespace blink 1415 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698