| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv
ed. | 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv
ed. |
| 4 * | 4 * |
| 5 * This library is free software; you can redistribute it and/or | 5 * This library is free software; you can redistribute it and/or |
| 6 * modify it under the terms of the GNU Library General Public | 6 * modify it under the terms of the GNU Library General Public |
| 7 * License as published by the Free Software Foundation; either | 7 * License as published by the Free Software Foundation; either |
| 8 * version 2 of the License, or (at your option) any later version. | 8 * version 2 of the License, or (at your option) any later version. |
| 9 * | 9 * |
| 10 * This library is distributed in the hope that it will be useful, | 10 * This library is distributed in the hope that it will be useful, |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 113 { | 113 { |
| 114 return child->isBox(); | 114 return child->isBox(); |
| 115 } | 115 } |
| 116 | 116 |
| 117 void RenderView::layoutContent(const LayoutState& state) | 117 void RenderView::layoutContent(const LayoutState& state) |
| 118 { | 118 { |
| 119 UNUSED_PARAM(state); | 119 UNUSED_PARAM(state); |
| 120 ASSERT(needsLayout()); | 120 ASSERT(needsLayout()); |
| 121 | 121 |
| 122 RenderBlock::layout(); | 122 RenderBlock::layout(); |
| 123 |
| 124 if (m_frameView->partialLayout().shouldStop()) |
| 125 return; |
| 126 |
| 123 if (hasRenderNamedFlowThreads()) | 127 if (hasRenderNamedFlowThreads()) |
| 124 flowThreadController()->layoutRenderNamedFlowThreads(); | 128 flowThreadController()->layoutRenderNamedFlowThreads(); |
| 129 |
| 125 #ifndef NDEBUG | 130 #ifndef NDEBUG |
| 126 checkLayoutState(state); | 131 checkLayoutState(state); |
| 127 #endif | 132 #endif |
| 128 } | 133 } |
| 129 | 134 |
| 130 #ifndef NDEBUG | 135 #ifndef NDEBUG |
| 131 void RenderView::checkLayoutState(const LayoutState& state) | 136 void RenderView::checkLayoutState(const LayoutState& state) |
| 132 { | 137 { |
| 133 ASSERT(layoutDeltaMatches(LayoutSize())); | 138 ASSERT(layoutDeltaMatches(LayoutSize())); |
| 134 ASSERT(!m_layoutStateDisableCount); | 139 ASSERT(!m_layoutStateDisableCount); |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 207 // 1. The flows are laid out from the outer flow to the inner flow. This success
fully computes the outer non-auto-height regions size so the | 212 // 1. The flows are laid out from the outer flow to the inner flow. This success
fully computes the outer non-auto-height regions size so the |
| 208 // inner flows have the necessary information to correctly fragment the content. | 213 // inner flows have the necessary information to correctly fragment the content. |
| 209 // 2. The flows are laid out from the inner flow to the outer flow. After an inn
er flow is laid out it goes into the constrained layout phase | 214 // 2. The flows are laid out from the inner flow to the outer flow. After an inn
er flow is laid out it goes into the constrained layout phase |
| 210 // and marks the auto-height regions they need layout. This means the outer flow
s will relayout if they depend on regions with auto-height regions | 215 // and marks the auto-height regions they need layout. This means the outer flow
s will relayout if they depend on regions with auto-height regions |
| 211 // belonging to inner flows. This step will correctly set the computedAutoHeight
for the auto-height regions. It's possible for non-auto-height | 216 // belonging to inner flows. This step will correctly set the computedAutoHeight
for the auto-height regions. It's possible for non-auto-height |
| 212 // regions to relayout if they depend on auto-height regions. This will invalida
te the inner flow threads and mark them as needing layout. | 217 // regions to relayout if they depend on auto-height regions. This will invalida
te the inner flow threads and mark them as needing layout. |
| 213 // 3. The last step is to do one last layout if there are pathological dependenc
ies between non-auto-height regions and auto-height regions | 218 // 3. The last step is to do one last layout if there are pathological dependenc
ies between non-auto-height regions and auto-height regions |
| 214 // as detected in the previous step. | 219 // as detected in the previous step. |
| 215 void RenderView::layoutContentInAutoLogicalHeightRegions(const LayoutState& stat
e) | 220 void RenderView::layoutContentInAutoLogicalHeightRegions(const LayoutState& stat
e) |
| 216 { | 221 { |
| 222 if (!m_frameView->partialLayout().shouldStop()) { |
| 223 // Disable partial layout for any two-pass layout algorithm. |
| 224 m_frameView->partialLayout().reset(); |
| 225 } |
| 226 |
| 217 // We need to invalidate all the flows with auto-height regions if one such
flow needs layout. | 227 // We need to invalidate all the flows with auto-height regions if one such
flow needs layout. |
| 218 // If none is found we do a layout a check back again afterwards. | 228 // If none is found we do a layout a check back again afterwards. |
| 219 if (!flowThreadController()->updateFlowThreadsNeedingLayout()) { | 229 if (!flowThreadController()->updateFlowThreadsNeedingLayout()) { |
| 220 // Do a first layout of the content. In some cases more layouts are not
needed (e.g. only flows with non-auto-height regions have changed). | 230 // Do a first layout of the content. In some cases more layouts are not
needed (e.g. only flows with non-auto-height regions have changed). |
| 221 layoutContent(state); | 231 layoutContent(state); |
| 222 | 232 |
| 223 // If we find no named flow needing a two step layout after the first la
yout, exit early. | 233 // If we find no named flow needing a two step layout after the first la
yout, exit early. |
| 224 // Otherwise, initiate the two step layout algorithm and recompute all t
he flows. | 234 // Otherwise, initiate the two step layout algorithm and recompute all t
he flows. |
| 225 if (!flowThreadController()->updateFlowThreadsNeedingTwoStepLayout()) | 235 if (!flowThreadController()->updateFlowThreadsNeedingTwoStepLayout()) |
| 226 return; | 236 return; |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 276 bool isSeamlessAncestorInFlowThread = initializeLayoutState(state); | 286 bool isSeamlessAncestorInFlowThread = initializeLayoutState(state); |
| 277 | 287 |
| 278 m_pageLogicalHeightChanged = false; | 288 m_pageLogicalHeightChanged = false; |
| 279 m_layoutState = &state; | 289 m_layoutState = &state; |
| 280 | 290 |
| 281 if (checkTwoPassLayoutForAutoHeightRegions()) | 291 if (checkTwoPassLayoutForAutoHeightRegions()) |
| 282 layoutContentInAutoLogicalHeightRegions(state); | 292 layoutContentInAutoLogicalHeightRegions(state); |
| 283 else | 293 else |
| 284 layoutContent(state); | 294 layoutContent(state); |
| 285 | 295 |
| 296 if (m_frameView->partialLayout().shouldStop()) { |
| 297 m_layoutState = 0; |
| 298 return; |
| 299 } |
| 300 |
| 286 #ifndef NDEBUG | 301 #ifndef NDEBUG |
| 287 checkLayoutState(state); | 302 checkLayoutState(state); |
| 288 #endif | 303 #endif |
| 289 m_layoutState = 0; | 304 m_layoutState = 0; |
| 290 clearNeedsLayout(); | 305 clearNeedsLayout(); |
| 291 | 306 |
| 292 if (isSeamlessAncestorInFlowThread) | 307 if (isSeamlessAncestorInFlowThread) |
| 293 flowThreadController()->setCurrentRenderFlowThread(0); | 308 flowThreadController()->setCurrentRenderFlowThread(0); |
| 294 } | 309 } |
| 295 | 310 |
| (...skipping 857 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1153 #endif | 1168 #endif |
| 1154 | 1169 |
| 1155 if (layoutState) | 1170 if (layoutState) |
| 1156 layoutState->m_isPaginated = m_fragmenting; | 1171 layoutState->m_isPaginated = m_fragmenting; |
| 1157 | 1172 |
| 1158 if (m_flowThreadState != RenderObject::NotInsideFlowThread) | 1173 if (m_flowThreadState != RenderObject::NotInsideFlowThread) |
| 1159 m_root->setFlowThreadStateIncludingDescendants(m_flowThreadState); | 1174 m_root->setFlowThreadStateIncludingDescendants(m_flowThreadState); |
| 1160 } | 1175 } |
| 1161 | 1176 |
| 1162 } // namespace WebCore | 1177 } // namespace WebCore |
| OLD | NEW |