OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google 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 are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
193 if (RenderMultiColumnFlowThread* flowThread = multiColumnFlowThread()) { | 193 if (RenderMultiColumnFlowThread* flowThread = multiColumnFlowThread()) { |
194 if (flowThread->computeColumnCountAndWidth()) | 194 if (flowThread->computeColumnCountAndWidth()) |
195 return true; | 195 return true; |
196 } | 196 } |
197 return relayoutChildren; | 197 return relayoutChildren; |
198 } | 198 } |
199 | 199 |
200 void RenderBlockFlow::checkForPaginationLogicalHeightChange(LayoutUnit& pageLogi
calHeight, bool& pageLogicalHeightChanged, bool& hasSpecifiedPageLogicalHeight) | 200 void RenderBlockFlow::checkForPaginationLogicalHeightChange(LayoutUnit& pageLogi
calHeight, bool& pageLogicalHeightChanged, bool& hasSpecifiedPageLogicalHeight) |
201 { | 201 { |
202 if (RenderMultiColumnFlowThread* flowThread = multiColumnFlowThread()) { | 202 if (RenderMultiColumnFlowThread* flowThread = multiColumnFlowThread()) { |
203 // We don't actually update any of the variables. We just subclassed to
adjust our column height. | |
204 updateLogicalHeight(); | 203 updateLogicalHeight(); |
| 204 pageLogicalHeightChanged = contentLogicalHeight() != flowThread->columnH
eightAvailable(); |
205 flowThread->setColumnHeightAvailable(std::max<LayoutUnit>(contentLogical
Height(), 0)); | 205 flowThread->setColumnHeightAvailable(std::max<LayoutUnit>(contentLogical
Height(), 0)); |
206 setLogicalHeight(0); | 206 setLogicalHeight(0); |
207 } else if (hasColumns()) { | 207 } else if (hasColumns()) { |
208 ColumnInfo* colInfo = columnInfo(); | 208 ColumnInfo* colInfo = columnInfo(); |
209 | 209 |
210 if (!pageLogicalHeight) { | 210 if (!pageLogicalHeight) { |
211 LayoutUnit oldLogicalHeight = logicalHeight(); | 211 LayoutUnit oldLogicalHeight = logicalHeight(); |
212 setLogicalHeight(0); | 212 setLogicalHeight(0); |
213 // We need to go ahead and set our explicit page height if one exist
s, so that we can | 213 // We need to go ahead and set our explicit page height if one exist
s, so that we can |
214 // avoid doing two layout passes. | 214 // avoid doing two layout passes. |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
344 { | 344 { |
345 LayoutUnit oldLeft = logicalLeft(); | 345 LayoutUnit oldLeft = logicalLeft(); |
346 if (updateLogicalWidthAndColumnWidth()) | 346 if (updateLogicalWidthAndColumnWidth()) |
347 relayoutChildren = true; | 347 relayoutChildren = true; |
348 | 348 |
349 rebuildFloatsFromIntruding(); | 349 rebuildFloatsFromIntruding(); |
350 | 350 |
351 bool pageLogicalHeightChanged = false; | 351 bool pageLogicalHeightChanged = false; |
352 bool hasSpecifiedPageLogicalHeight = false; | 352 bool hasSpecifiedPageLogicalHeight = false; |
353 checkForPaginationLogicalHeightChange(pageLogicalHeight, pageLogicalHeightCh
anged, hasSpecifiedPageLogicalHeight); | 353 checkForPaginationLogicalHeightChange(pageLogicalHeight, pageLogicalHeightCh
anged, hasSpecifiedPageLogicalHeight); |
| 354 if (pageLogicalHeightChanged) |
| 355 relayoutChildren = true; |
354 | 356 |
355 LayoutStateMaintainer statePusher(*this, locationOffset(), pageLogicalHeight
, pageLogicalHeightChanged, columnInfo()); | 357 LayoutStateMaintainer statePusher(*this, locationOffset(), pageLogicalHeight
, pageLogicalHeightChanged, columnInfo()); |
356 | 358 |
357 // We use four values, maxTopPos, maxTopNeg, maxBottomPos, and maxBottomNeg,
to track | 359 // We use four values, maxTopPos, maxTopNeg, maxBottomPos, and maxBottomNeg,
to track |
358 // our current maximal positive and negative margins. These values are used
when we | 360 // our current maximal positive and negative margins. These values are used
when we |
359 // are collapsed with adjacent blocks, so for example, if you have block A a
nd B | 361 // are collapsed with adjacent blocks, so for example, if you have block A a
nd B |
360 // collapsing together, then you'd take the maximal positive margin from bot
h A and B | 362 // collapsing together, then you'd take the maximal positive margin from bot
h A and B |
361 // and subtract it from the maximal negative margin from both A and B to get
the | 363 // and subtract it from the maximal negative margin from both A and B to get
the |
362 // true collapsed margin. This algorithm is recursive, so when we finish lay
out() | 364 // true collapsed margin. This algorithm is recursive, so when we finish lay
out() |
363 // our block knows its current maximal positive/negative values. | 365 // our block knows its current maximal positive/negative values. |
(...skipping 2433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2797 RenderBlockFlow::RenderBlockFlowRareData& RenderBlockFlow::ensureRareData() | 2799 RenderBlockFlow::RenderBlockFlowRareData& RenderBlockFlow::ensureRareData() |
2798 { | 2800 { |
2799 if (m_rareData) | 2801 if (m_rareData) |
2800 return *m_rareData; | 2802 return *m_rareData; |
2801 | 2803 |
2802 m_rareData = adoptPtr(new RenderBlockFlowRareData(this)); | 2804 m_rareData = adoptPtr(new RenderBlockFlowRareData(this)); |
2803 return *m_rareData; | 2805 return *m_rareData; |
2804 } | 2806 } |
2805 | 2807 |
2806 } // namespace WebCore | 2808 } // namespace WebCore |
OLD | NEW |