OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "core/layout/MultiColumnFragmentainerGroup.h" | 5 #include "core/layout/MultiColumnFragmentainerGroup.h" |
6 | 6 |
7 #include "core/layout/ColumnBalancer.h" | 7 #include "core/layout/ColumnBalancer.h" |
8 #include "core/layout/FragmentationContext.h" | 8 #include "core/layout/FragmentationContext.h" |
9 #include "core/layout/LayoutMultiColumnSet.h" | 9 #include "core/layout/LayoutMultiColumnSet.h" |
10 | 10 |
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
260 fragment.paginationClip = flowThreadPortionOverflowRectAt(i); | 260 fragment.paginationClip = flowThreadPortionOverflowRectAt(i); |
261 // Flip it into more a physical (PaintLayer-style) rectangle. | 261 // Flip it into more a physical (PaintLayer-style) rectangle. |
262 flowThread->flipForWritingMode(fragment.paginationClip); | 262 flowThread->flipForWritingMode(fragment.paginationClip); |
263 | 263 |
264 fragments.append(fragment); | 264 fragments.append(fragment); |
265 } | 265 } |
266 } | 266 } |
267 | 267 |
268 LayoutRect MultiColumnFragmentainerGroup::calculateOverflow() const | 268 LayoutRect MultiColumnFragmentainerGroup::calculateOverflow() const |
269 { | 269 { |
270 unsigned columnCount = actualColumnCount(); | 270 // Note that we just return the bounding rectangle of the column boxes here.
We currently don't |
271 if (!columnCount) | 271 // examine overflow caused by the actual content that ends up in each column
. |
272 return LayoutRect(); | 272 LayoutRect overflowRect; |
273 return columnRectAt(columnCount - 1); | 273 if (unsigned columnCount = actualColumnCount()) { |
| 274 overflowRect = columnRectAt(0); |
| 275 if (columnCount > 1) |
| 276 overflowRect.uniteEvenIfEmpty(columnRectAt(columnCount - 1)); |
| 277 } |
| 278 return overflowRect; |
274 } | 279 } |
275 | 280 |
276 unsigned MultiColumnFragmentainerGroup::actualColumnCount() const | 281 unsigned MultiColumnFragmentainerGroup::actualColumnCount() const |
277 { | 282 { |
278 // We must always return a value of 1 or greater. Column count = 0 is a mean
ingless situation, | 283 // We must always return a value of 1 or greater. Column count = 0 is a mean
ingless situation, |
279 // and will confuse and cause problems in other parts of the code. | 284 // and will confuse and cause problems in other parts of the code. |
280 if (!m_columnHeight) | 285 if (!m_columnHeight) |
281 return 1; | 286 return 1; |
282 | 287 |
283 // Our flow thread portion determines our column count. We have as many colu
mns as needed to fit | 288 // Our flow thread portion determines our column count. We have as many colu
mns as needed to fit |
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
535 append(MultiColumnFragmentainerGroup(m_columnSet)); | 540 append(MultiColumnFragmentainerGroup(m_columnSet)); |
536 return last(); | 541 return last(); |
537 } | 542 } |
538 | 543 |
539 void MultiColumnFragmentainerGroupList::deleteExtraGroups() | 544 void MultiColumnFragmentainerGroupList::deleteExtraGroups() |
540 { | 545 { |
541 shrink(1); | 546 shrink(1); |
542 } | 547 } |
543 | 548 |
544 } // namespace blink | 549 } // namespace blink |
OLD | NEW |