OLD | NEW |
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 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) | 4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) |
5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) | 5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) |
6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv
ed. | 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv
ed. |
7 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. | 7 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. |
8 * | 8 * |
9 * This library is free software; you can redistribute it and/or | 9 * This library is free software; you can redistribute it and/or |
10 * modify it under the terms of the GNU Library General Public | 10 * modify it under the terms of the GNU Library General Public |
(...skipping 4083 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4094 // Floating objects don't shrink. Objects that don't avoid floats don't shr
ink. Marquees don't shrink. | 4094 // Floating objects don't shrink. Objects that don't avoid floats don't shr
ink. Marquees don't shrink. |
4095 if ((isInline() && !isMarquee()) || !avoidsFloats() || isFloating()) | 4095 if ((isInline() && !isMarquee()) || !avoidsFloats() || isFloating()) |
4096 return false; | 4096 return false; |
4097 | 4097 |
4098 // Only auto width objects can possibly shrink to avoid floats. | 4098 // Only auto width objects can possibly shrink to avoid floats. |
4099 return style()->width().isAuto(); | 4099 return style()->width().isAuto(); |
4100 } | 4100 } |
4101 | 4101 |
4102 bool RenderBox::avoidsFloats() const | 4102 bool RenderBox::avoidsFloats() const |
4103 { | 4103 { |
4104 // CSS2.1: "The border box of a table, a block-level replaced element, or an
element in the normal flow that establishes a new block formatting | 4104 return isReplaced() || hasOverflowClip() || isHR() || isLegend() || isWritin
gModeRoot() || isFlexItemIncludingDeprecated(); |
4105 // context .. must not overlap the margin box of any floats in the same bloc
k formatting context." | |
4106 // FIXME: The inclusion of horizontal rule and legend elements here isn't co
vered by any spec. | |
4107 return isReplaced() || isHR() || isLegend() || isTable() || (!isFloatingOrOu
tOfFlowPositioned() && createsBlockFormattingContext()); | |
4108 } | |
4109 | |
4110 bool RenderBox::createsBlockFormattingContext() const | |
4111 { | |
4112 return isInlineBlockOrInlineTable() || isFloatingOrOutOfFlowPositioned() ||
hasOverflowClip() || isFlexItemIncludingDeprecated() | |
4113 || style()->specifiesColumns() || isRenderFlowThread() || isTableCell()
|| isTableCaption() || isFieldset() || isWritingModeRoot() || isDocumentElement(
) || style()->columnSpan(); | |
4114 } | 4105 } |
4115 | 4106 |
4116 void RenderBox::markForPaginationRelayoutIfNeeded(SubtreeLayoutScope& layoutScop
e) | 4107 void RenderBox::markForPaginationRelayoutIfNeeded(SubtreeLayoutScope& layoutScop
e) |
4117 { | 4108 { |
4118 ASSERT(!needsLayout()); | 4109 ASSERT(!needsLayout()); |
4119 // If fragmentation height has changed, we need to lay out. No need to enter
the renderer if it | 4110 // If fragmentation height has changed, we need to lay out. No need to enter
the renderer if it |
4120 // is childless, though. | 4111 // is childless, though. |
4121 if (view()->layoutState()->pageLogicalHeightChanged() && firstChild()) | 4112 if (view()->layoutState()->pageLogicalHeightChanged() && firstChild()) |
4122 layoutScope.setChildNeedsLayout(this); | 4113 layoutScope.setChildNeedsLayout(this); |
4123 } | 4114 } |
(...skipping 547 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4671 return 0; | 4662 return 0; |
4672 | 4663 |
4673 if (!layoutState && !flowThreadContainingBlock()) | 4664 if (!layoutState && !flowThreadContainingBlock()) |
4674 return 0; | 4665 return 0; |
4675 | 4666 |
4676 RenderBlock* containerBlock = containingBlock(); | 4667 RenderBlock* containerBlock = containingBlock(); |
4677 return containerBlock->offsetFromLogicalTopOfFirstPage() + logicalTop(); | 4668 return containerBlock->offsetFromLogicalTopOfFirstPage() + logicalTop(); |
4678 } | 4669 } |
4679 | 4670 |
4680 } // namespace WebCore | 4671 } // namespace WebCore |
OLD | NEW |