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

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

Issue 1102953002: BR styled clear is ignored while partially relayouting. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Better approach. Created 5 years, 8 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/LayoutBlockFlowLine.cpp
diff --git a/Source/core/layout/LayoutBlockFlowLine.cpp b/Source/core/layout/LayoutBlockFlowLine.cpp
index 026dfc368696d0e63ac37a88526d786e8a397239..9f41cb93b991b9fbaeaf9c47c2ae2a38374d955d 100644
--- a/Source/core/layout/LayoutBlockFlowLine.cpp
+++ b/Source/core/layout/LayoutBlockFlowLine.cpp
@@ -745,6 +745,7 @@ void LayoutBlockFlow::layoutRunsAndFloats(LineLayoutState& layoutState)
if (containsFloats())
layoutState.setLastFloat(m_floatingObjects->set().last().get());
+
leviw_travelin_and_unemployed 2015/05/11 00:25:29 Remove unnecessary empty line.
changseok 2015/05/11 15:56:46 Done.
// We also find the first clean line and extract these lines. We will add them back
// if we determine that we're able to synchronize after handling all our dirty lines.
InlineIterator cleanLineStart;
@@ -1564,6 +1565,9 @@ void LayoutBlockFlow::layoutInlineChildren(bool relayoutChildren, LayoutUnit& pa
if (!layoutState.hasInlineChild() && o->isInline())
layoutState.setHasInlineChild(true);
+ if (o->isBR() && (o->style()->clear() != CNONE))
esprehn 2015/05/10 18:23:35 remove parens
changseok 2015/05/11 15:56:46 Done.
+ layoutState.setContainsClearBR(true);
+
if (o->isReplaced() || o->isFloating() || o->isOutOfFlowPositioned()) {
LayoutBox* box = toLayoutBox(o);
@@ -1857,7 +1861,7 @@ bool LayoutBlockFlow::checkPaginationAndFloatsAtEndLine(LineLayoutState& layoutS
bool LayoutBlockFlow::matchedEndLine(LineLayoutState& layoutState, const InlineBidiResolver& resolver, const InlineIterator& endLineStart, const BidiStatus& endLineStatus)
{
if (resolver.position() == endLineStart) {
- if (resolver.status() != endLineStatus)
+ if ((resolver.status() != endLineStatus) || (containsFloats() && layoutState.containsClearBR()))
esprehn 2015/05/10 18:23:35 remove extra parens on the first expr.
changseok 2015/05/11 15:56:46 Done.
return false;
return checkPaginationAndFloatsAtEndLine(layoutState);
}

Powered by Google App Engine
This is Rietveld 408576698