Chromium Code Reviews| Index: Source/core/rendering/RenderBlockFlow.cpp |
| diff --git a/Source/core/rendering/RenderBlockFlow.cpp b/Source/core/rendering/RenderBlockFlow.cpp |
| index 79571ad4b80534c6cc8771980d42f5d73a334acc..19f6682e586c6da18d734795959ba0163ca6a674 100644 |
| --- a/Source/core/rendering/RenderBlockFlow.cpp |
| +++ b/Source/core/rendering/RenderBlockFlow.cpp |
| @@ -899,7 +899,7 @@ void RenderBlockFlow::rebuildFloatsFromIntruding() |
| } |
| // Inline blocks are covered by the isReplaced() check in the avoidFloats method. |
| - if (avoidsFloats() || isDocumentElement() || isRenderView() || isFloatingOrOutOfFlowPositioned() || isTableCell()) { |
| + if (avoidsOrIgnoresFloats() || isRenderView()) { |
| if (m_floatingObjects) { |
| m_floatingObjects->clear(); |
| } |
| @@ -929,7 +929,7 @@ void RenderBlockFlow::rebuildFloatsFromIntruding() |
| RenderBlockFlow* parentBlockFlow = toRenderBlockFlow(parent()); |
| bool parentHasFloats = false; |
| RenderObject* prev = previousSibling(); |
| - while (prev && (!prev->isBox() || !prev->isRenderBlock() || toRenderBlock(prev)->avoidsFloats() || toRenderBlock(prev)->createsBlockFormattingContext())) { |
| + while (prev && (!prev->isBox() || !prev->isRenderBlock() || toRenderBlock(prev)->avoidsOrIgnoresFloats())) { |
| if (prev->isFloating()) |
| parentHasFloats = true; |
| prev = prev->previousSibling(); |
| @@ -1838,7 +1838,7 @@ void RenderBlockFlow::markSiblingsWithFloatsForLayout(RenderBox* floatToRemove) |
| FloatingObjectSetIterator end = floatingObjectSet.end(); |
| for (RenderObject* next = nextSibling(); next; next = next->nextSibling()) { |
| - if (!next->isRenderBlockFlow() || next->isFloatingOrOutOfFlowPositioned() || toRenderBlockFlow(next)->avoidsFloats()) |
| + if (!next->isRenderBlockFlow() || avoidsOrIgnoresFloats()) |
| continue; |
| RenderBlockFlow* nextBlock = toRenderBlockFlow(next); |
| @@ -1917,7 +1917,7 @@ void RenderBlockFlow::createFloatingObjects() |
| void RenderBlockFlow::styleWillChange(StyleDifference diff, const RenderStyle& newStyle) |
| { |
| RenderStyle* oldStyle = style(); |
| - s_canPropagateFloatIntoSibling = oldStyle ? !isFloatingOrOutOfFlowPositioned() && !avoidsFloats() : false; |
| + s_canPropagateFloatIntoSibling = oldStyle ? !avoidsOrIgnoresFloats() : false; |
|
rhogan
2014/11/11 19:17:13
I had !createsBlockFormattingContext() here; which
|
| if (oldStyle && parent() && diff.needsFullLayout() && oldStyle->position() != newStyle.position() |
| && containsFloats() && !isFloating() && !isOutOfFlowPositioned() && newStyle.hasOutOfFlowPosition()) |
| markAllDescendantsWithFloatsForLayout(); |
| @@ -1933,7 +1933,7 @@ void RenderBlockFlow::styleDidChange(StyleDifference diff, const RenderStyle* ol |
| // blocks, then we need to find the top most parent containing that overhanging float and |
| // then mark its descendants with floats for layout and clear all floats from its next |
| // sibling blocks that exist in our floating objects list. See bug 56299 and 62875. |
| - bool canPropagateFloatIntoSibling = !isFloatingOrOutOfFlowPositioned() && !avoidsFloats(); |
| + bool canPropagateFloatIntoSibling = !avoidsOrIgnoresFloats(); |
| if (diff.needsFullLayout() && s_canPropagateFloatIntoSibling && !canPropagateFloatIntoSibling && hasOverhangingFloats()) { |
| RenderBlockFlow* parentBlockFlow = this; |
| const FloatingObjectSet& floatingObjectSet = m_floatingObjects->set(); |
| @@ -2710,13 +2710,6 @@ void RenderBlockFlow::setPaginationStrut(LayoutUnit strut) |
| m_rareData->m_paginationStrut = strut; |
| } |
| -bool RenderBlockFlow::avoidsFloats() const |
| -{ |
| - // Floats can't intrude into our box if we have a non-auto column count or width. |
| - // Note: we need to use RenderBox::avoidsFloats here since RenderBlock::avoidsFloats is always true. |
| - return RenderBox::avoidsFloats() || !style()->hasAutoColumnCount() || !style()->hasAutoColumnWidth(); |
| -} |
| - |
| LayoutUnit RenderBlockFlow::logicalLeftSelectionOffset(const RenderBlock* rootBlock, LayoutUnit position) const |
| { |
| LayoutUnit logicalLeft = logicalLeftOffsetForLine(position, false); |