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 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
246 // layout (during column set layout), in which case we need another layout | 246 // layout (during column set layout), in which case we need another layout |
247 // pass. Column heights may change after flow thread layout because of | 247 // pass. Column heights may change after flow thread layout because of |
248 // balancing. We may have to do multiple layout passes, depending on how the | 248 // balancing. We may have to do multiple layout passes, depending on how the |
249 // contents is fitted to the changed column heights. In most cases, laying out | 249 // contents is fitted to the changed column heights. In most cases, laying out |
250 // again twice or even just once will suffice. Sometimes we need more passes | 250 // again twice or even just once will suffice. Sometimes we need more passes |
251 // than that, though, but the number of retries should not exceed the number | 251 // than that, though, but the number of retries should not exceed the number |
252 // of columns, unless we have a bug. | 252 // of columns, unless we have a bug. |
253 bool ColumnHeightsChanged() const { return column_heights_changed_; } | 253 bool ColumnHeightsChanged() const { return column_heights_changed_; } |
254 void SetColumnHeightsChanged() { column_heights_changed_ = true; } | 254 void SetColumnHeightsChanged() { column_heights_changed_ = true; } |
255 | 255 |
| 256 // Finish multicol layout. Returns true if we're really done, or false if we |
| 257 // need another layout pass (typically because columns got new heights in the |
| 258 // previous pass, so that we need to refragment). |
| 259 bool FinishLayout(); |
| 260 |
256 void ColumnRuleStyleDidChange(); | 261 void ColumnRuleStyleDidChange(); |
257 | 262 |
258 // Remove the spanner placeholder and return true if the specified object is | 263 // Remove the spanner placeholder and return true if the specified object is |
259 // no longer a valid spanner. | 264 // no longer a valid spanner. |
260 bool RemoveSpannerPlaceholderIfNoLongerValid( | 265 bool RemoveSpannerPlaceholderIfNoLongerValid( |
261 LayoutBox* spanner_object_in_flow_thread); | 266 LayoutBox* spanner_object_in_flow_thread); |
262 | 267 |
263 LayoutMultiColumnFlowThread* EnclosingFlowThread( | 268 LayoutMultiColumnFlowThread* EnclosingFlowThread( |
264 AncestorSearchConstraint = kIsolateUnbreakableContainers) const; | 269 AncestorSearchConstraint = kIsolateUnbreakableContainers) const; |
265 FragmentationContext* EnclosingFragmentationContext( | 270 FragmentationContext* EnclosingFragmentationContext( |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
345 LayoutUnit column_height_available_; | 350 LayoutUnit column_height_available_; |
346 | 351 |
347 // Cached block offset from this flow thread to the enclosing fragmentation | 352 // Cached block offset from this flow thread to the enclosing fragmentation |
348 // context, if any. In | 353 // context, if any. In |
349 // the coordinate space of the enclosing fragmentation context. | 354 // the coordinate space of the enclosing fragmentation context. |
350 LayoutUnit block_offset_in_enclosing_fragmentation_context_; | 355 LayoutUnit block_offset_in_enclosing_fragmentation_context_; |
351 | 356 |
352 // Set when column heights are out of sync with actual layout. | 357 // Set when column heights are out of sync with actual layout. |
353 bool column_heights_changed_; | 358 bool column_heights_changed_; |
354 | 359 |
| 360 bool all_columns_have_known_height_ = false; |
| 361 |
355 // Always true for regular multicol. False for paged-y overflow. | 362 // Always true for regular multicol. False for paged-y overflow. |
356 bool progression_is_inline_; | 363 bool progression_is_inline_; |
357 | 364 |
358 bool is_being_evacuated_; | 365 bool is_being_evacuated_; |
359 | 366 |
360 // Specifies whether the the descendant whose style is about to change could | 367 // Specifies whether the the descendant whose style is about to change could |
361 // contain spanners or not. The flag is set in | 368 // contain spanners or not. The flag is set in |
362 // flowThreadDescendantStyleWillChange(), and then checked in | 369 // flowThreadDescendantStyleWillChange(), and then checked in |
363 // flowThreadDescendantStyleDidChange(). | 370 // flowThreadDescendantStyleDidChange(). |
364 static bool could_contain_spanners_; | 371 static bool could_contain_spanners_; |
365 | 372 |
366 static bool toggle_spanners_if_needed_; | 373 static bool toggle_spanners_if_needed_; |
367 }; | 374 }; |
368 | 375 |
369 // Cannot use DEFINE_LAYOUT_OBJECT_TYPE_CASTS here, because | 376 // Cannot use DEFINE_LAYOUT_OBJECT_TYPE_CASTS here, because |
370 // isMultiColumnFlowThread() is defined in LayoutFlowThread, not in | 377 // isMultiColumnFlowThread() is defined in LayoutFlowThread, not in |
371 // LayoutObject. | 378 // LayoutObject. |
372 DEFINE_TYPE_CASTS(LayoutMultiColumnFlowThread, | 379 DEFINE_TYPE_CASTS(LayoutMultiColumnFlowThread, |
373 LayoutFlowThread, | 380 LayoutFlowThread, |
374 object, | 381 object, |
375 object->IsLayoutMultiColumnFlowThread(), | 382 object->IsLayoutMultiColumnFlowThread(), |
376 object.IsLayoutMultiColumnFlowThread()); | 383 object.IsLayoutMultiColumnFlowThread()); |
377 | 384 |
378 } // namespace blink | 385 } // namespace blink |
379 | 386 |
380 #endif // LayoutMultiColumnFlowThread_h | 387 #endif // LayoutMultiColumnFlowThread_h |
OLD | NEW |