OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2012 Apple Inc. All rights reserved. | 2 * Copyright (C) 2012 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 29 matching lines...) Expand all Loading... |
40 , m_columnCount(1) | 40 , m_columnCount(1) |
41 , m_columnWidth(0) | 41 , m_columnWidth(0) |
42 , m_columnHeightAvailable(0) | 42 , m_columnHeightAvailable(0) |
43 , m_inBalancingPass(false) | 43 , m_inBalancingPass(false) |
44 , m_needsRebalancing(false) | 44 , m_needsRebalancing(false) |
45 { | 45 { |
46 } | 46 } |
47 | 47 |
48 void RenderMultiColumnBlock::styleDidChange(StyleDifference diff, const RenderSt
yle* oldStyle) | 48 void RenderMultiColumnBlock::styleDidChange(StyleDifference diff, const RenderSt
yle* oldStyle) |
49 { | 49 { |
50 RenderBlock::styleDidChange(diff, oldStyle); | 50 RenderBlockFlow::styleDidChange(diff, oldStyle); |
51 for (RenderBox* child = firstChildBox(); child; child = child->nextSiblingBo
x()) | 51 for (RenderBox* child = firstChildBox(); child; child = child->nextSiblingBo
x()) |
52 child->setStyle(RenderStyle::createAnonymousStyleWithDisplay(style(), BL
OCK)); | 52 child->setStyle(RenderStyle::createAnonymousStyleWithDisplay(style(), BL
OCK)); |
53 } | 53 } |
54 | 54 |
55 void RenderMultiColumnBlock::computeColumnCountAndWidth() | 55 void RenderMultiColumnBlock::computeColumnCountAndWidth() |
56 { | 56 { |
57 // Calculate our column width and column count. | 57 // Calculate our column width and column count. |
58 // FIXME: Can overflow on fast/block/float/float-not-removed-from-next-sibli
ng4.html, see https://bugs.webkit.org/show_bug.cgi?id=68744 | 58 // FIXME: Can overflow on fast/block/float/float-not-removed-from-next-sibli
ng4.html, see https://bugs.webkit.org/show_bug.cgi?id=68744 |
59 m_columnCount = 1; | 59 m_columnCount = 1; |
60 m_columnWidth = contentLogicalWidth(); | 60 m_columnWidth = contentLogicalWidth(); |
(...skipping 12 matching lines...) Expand all Loading... |
73 m_columnCount = max<LayoutUnit>(1, (availWidth + colGap) / (colWidth + c
olGap)); | 73 m_columnCount = max<LayoutUnit>(1, (availWidth + colGap) / (colWidth + c
olGap)); |
74 m_columnWidth = ((availWidth + colGap) / m_columnCount) - colGap; | 74 m_columnWidth = ((availWidth + colGap) / m_columnCount) - colGap; |
75 } else { | 75 } else { |
76 m_columnCount = max<LayoutUnit>(min<LayoutUnit>(colCount, (availWidth +
colGap) / (colWidth + colGap)), 1); | 76 m_columnCount = max<LayoutUnit>(min<LayoutUnit>(colCount, (availWidth +
colGap) / (colWidth + colGap)), 1); |
77 m_columnWidth = ((availWidth + colGap) / m_columnCount) - colGap; | 77 m_columnWidth = ((availWidth + colGap) / m_columnCount) - colGap; |
78 } | 78 } |
79 } | 79 } |
80 | 80 |
81 bool RenderMultiColumnBlock::updateLogicalWidthAndColumnWidth() | 81 bool RenderMultiColumnBlock::updateLogicalWidthAndColumnWidth() |
82 { | 82 { |
83 bool relayoutChildren = RenderBlock::updateLogicalWidthAndColumnWidth(); | 83 bool relayoutChildren = RenderBlockFlow::updateLogicalWidthAndColumnWidth(); |
84 LayoutUnit oldColumnWidth = m_columnWidth; | 84 LayoutUnit oldColumnWidth = m_columnWidth; |
85 computeColumnCountAndWidth(); | 85 computeColumnCountAndWidth(); |
86 if (m_columnWidth != oldColumnWidth) | 86 if (m_columnWidth != oldColumnWidth) |
87 relayoutChildren = true; | 87 relayoutChildren = true; |
88 return relayoutChildren; | 88 return relayoutChildren; |
89 } | 89 } |
90 | 90 |
91 void RenderMultiColumnBlock::checkForPaginationLogicalHeightChange(LayoutUnit& /
*pageLogicalHeight*/, bool& /*pageLogicalHeightChanged*/, bool& /*hasSpecifiedPa
geLogicalHeight*/) | 91 void RenderMultiColumnBlock::checkForPaginationLogicalHeightChange(LayoutUnit& /
*pageLogicalHeight*/, bool& /*pageLogicalHeightChanged*/, bool& /*hasSpecifiedPa
geLogicalHeight*/) |
92 { | 92 { |
93 // We don't actually update any of the variables. We just subclassed to adju
st our column height. | 93 // We don't actually update any of the variables. We just subclassed to adju
st our column height. |
(...skipping 28 matching lines...) Expand all Loading... |
122 | 122 |
123 m_inBalancingPass = needsRelayout; | 123 m_inBalancingPass = needsRelayout; |
124 return needsRelayout; | 124 return needsRelayout; |
125 } | 125 } |
126 | 126 |
127 void RenderMultiColumnBlock::addChild(RenderObject* newChild, RenderObject* befo
reChild) | 127 void RenderMultiColumnBlock::addChild(RenderObject* newChild, RenderObject* befo
reChild) |
128 { | 128 { |
129 if (!m_flowThread) { | 129 if (!m_flowThread) { |
130 m_flowThread = RenderMultiColumnFlowThread::createAnonymous(&document())
; | 130 m_flowThread = RenderMultiColumnFlowThread::createAnonymous(&document())
; |
131 m_flowThread->setStyle(RenderStyle::createAnonymousStyleWithDisplay(styl
e(), BLOCK)); | 131 m_flowThread->setStyle(RenderStyle::createAnonymousStyleWithDisplay(styl
e(), BLOCK)); |
132 RenderBlock::addChild(m_flowThread); | 132 RenderBlockFlow::addChild(m_flowThread); |
133 } | 133 } |
134 m_flowThread->addChild(newChild, beforeChild); | 134 m_flowThread->addChild(newChild, beforeChild); |
135 } | 135 } |
136 | 136 |
137 RenderObject* RenderMultiColumnBlock::layoutSpecialExcludedChild(bool relayoutCh
ildren, SubtreeLayoutScope& layoutScope) | 137 RenderObject* RenderMultiColumnBlock::layoutSpecialExcludedChild(bool relayoutCh
ildren, SubtreeLayoutScope& layoutScope) |
138 { | 138 { |
139 if (!m_flowThread) | 139 if (!m_flowThread) |
140 return 0; | 140 return 0; |
141 | 141 |
142 // Update the dimensions of our regions before we lay out the flow thread. | 142 // Update the dimensions of our regions before we lay out the flow thread. |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
191 if (isPseudoElement()) | 191 if (isPseudoElement()) |
192 return "RenderMultiColumnBlock (generated)"; | 192 return "RenderMultiColumnBlock (generated)"; |
193 if (isAnonymous()) | 193 if (isAnonymous()) |
194 return "RenderMultiColumnBlock (generated)"; | 194 return "RenderMultiColumnBlock (generated)"; |
195 if (isRelPositioned()) | 195 if (isRelPositioned()) |
196 return "RenderMultiColumnBlock (relative positioned)"; | 196 return "RenderMultiColumnBlock (relative positioned)"; |
197 return "RenderMultiColumnBlock"; | 197 return "RenderMultiColumnBlock"; |
198 } | 198 } |
199 | 199 |
200 } | 200 } |
OLD | NEW |