| 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 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 305 LayoutRect LayoutMultiColumnSet::flowThreadPortionOverflowRect() const { | 305 LayoutRect LayoutMultiColumnSet::flowThreadPortionOverflowRect() const { |
| 306 return overflowRectForFlowThreadPortion(flowThreadPortionRect(), | 306 return overflowRectForFlowThreadPortion(flowThreadPortionRect(), |
| 307 !previousSiblingMultiColumnSet(), | 307 !previousSiblingMultiColumnSet(), |
| 308 !nextSiblingMultiColumnSet()); | 308 !nextSiblingMultiColumnSet()); |
| 309 } | 309 } |
| 310 | 310 |
| 311 LayoutRect LayoutMultiColumnSet::overflowRectForFlowThreadPortion( | 311 LayoutRect LayoutMultiColumnSet::overflowRectForFlowThreadPortion( |
| 312 const LayoutRect& flowThreadPortionRect, | 312 const LayoutRect& flowThreadPortionRect, |
| 313 bool isFirstPortion, | 313 bool isFirstPortion, |
| 314 bool isLastPortion) const { | 314 bool isLastPortion) const { |
| 315 if (hasOverflowClip()) | 315 // Only clip along the block direction axis. |
| 316 return flowThreadPortionRect; | 316 LayoutRect clipRect(LayoutRect::infiniteIntRect()); |
| 317 | 317 |
| 318 LayoutRect flowThreadOverflow = m_flowThread->visualOverflowRect(); | |
| 319 | |
| 320 // Only clip along the flow thread axis. | |
| 321 LayoutRect clipRect; | |
| 322 if (m_flowThread->isHorizontalWritingMode()) { | 318 if (m_flowThread->isHorizontalWritingMode()) { |
| 323 LayoutUnit minY = | 319 if (!isFirstPortion) |
| 324 isFirstPortion ? flowThreadOverflow.y() : flowThreadPortionRect.y(); | 320 clipRect.shiftYEdgeTo(flowThreadPortionRect.y()); |
| 325 LayoutUnit maxY = isLastPortion ? std::max(flowThreadPortionRect.maxY(), | 321 if (!isLastPortion) |
| 326 flowThreadOverflow.maxY()) | 322 clipRect.shiftMaxYEdgeTo(flowThreadPortionRect.maxY()); |
| 327 : flowThreadPortionRect.maxY(); | 323 return clipRect; |
| 328 LayoutUnit minX = | |
| 329 std::min(flowThreadPortionRect.x(), flowThreadOverflow.x()); | |
| 330 LayoutUnit maxX = | |
| 331 std::max(flowThreadPortionRect.maxX(), flowThreadOverflow.maxX()); | |
| 332 clipRect = LayoutRect(minX, minY, maxX - minX, maxY - minY); | |
| 333 } else { | |
| 334 LayoutUnit minX = | |
| 335 isFirstPortion ? flowThreadOverflow.x() : flowThreadPortionRect.x(); | |
| 336 LayoutUnit maxX = isLastPortion ? std::max(flowThreadPortionRect.maxX(), | |
| 337 flowThreadOverflow.maxX()) | |
| 338 : flowThreadPortionRect.maxX(); | |
| 339 LayoutUnit minY = | |
| 340 std::min(flowThreadPortionRect.y(), (flowThreadOverflow.y())); | |
| 341 LayoutUnit maxY = | |
| 342 std::max(flowThreadPortionRect.y(), (flowThreadOverflow.maxY())); | |
| 343 clipRect = LayoutRect(minX, minY, maxX - minX, maxY - minY); | |
| 344 } | 324 } |
| 345 | 325 if (!isFirstPortion) |
| 326 clipRect.shiftXEdgeTo(flowThreadPortionRect.x()); |
| 327 if (!isLastPortion) |
| 328 clipRect.shiftMaxXEdgeTo(flowThreadPortionRect.maxX()); |
| 346 return clipRect; | 329 return clipRect; |
| 347 } | 330 } |
| 348 | 331 |
| 349 bool LayoutMultiColumnSet::heightIsAuto() const { | 332 bool LayoutMultiColumnSet::heightIsAuto() const { |
| 350 LayoutMultiColumnFlowThread* flowThread = multiColumnFlowThread(); | 333 LayoutMultiColumnFlowThread* flowThread = multiColumnFlowThread(); |
| 351 if (!flowThread->isLayoutPagedFlowThread()) { | 334 if (!flowThread->isLayoutPagedFlowThread()) { |
| 352 // If support for the column-fill property isn't enabled, we want to behave | 335 // If support for the column-fill property isn't enabled, we want to behave |
| 353 // as if column-fill were auto, so that multicol containers with specified | 336 // as if column-fill were auto, so that multicol containers with specified |
| 354 // height don't get their columns balanced (auto-height multicol containers | 337 // height don't get their columns balanced (auto-height multicol containers |
| 355 // will still get their columns balanced, even if column-fill isn't | 338 // will still get their columns balanced, even if column-fill isn't |
| (...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 627 // Now add in column rule bounds, if present. | 610 // Now add in column rule bounds, if present. |
| 628 Vector<LayoutRect> columnRuleBounds; | 611 Vector<LayoutRect> columnRuleBounds; |
| 629 if (computeColumnRuleBounds(LayoutPoint(), columnRuleBounds)) { | 612 if (computeColumnRuleBounds(LayoutPoint(), columnRuleBounds)) { |
| 630 for (auto& bound : columnRuleBounds) | 613 for (auto& bound : columnRuleBounds) |
| 631 blockFlowBounds.unite(bound); | 614 blockFlowBounds.unite(bound); |
| 632 } | 615 } |
| 633 return blockFlowBounds; | 616 return blockFlowBounds; |
| 634 } | 617 } |
| 635 | 618 |
| 636 } // namespace blink | 619 } // namespace blink |
| OLD | NEW |