| 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 466 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 477 rebuildFloatsFromIntruding(); | 477 rebuildFloatsFromIntruding(); |
| 478 | 478 |
| 479 bool pageLogicalHeightChanged = false; | 479 bool pageLogicalHeightChanged = false; |
| 480 bool hasSpecifiedPageLogicalHeight = false; | 480 bool hasSpecifiedPageLogicalHeight = false; |
| 481 checkForPaginationLogicalHeightChange(pageLogicalHeight, | 481 checkForPaginationLogicalHeightChange(pageLogicalHeight, |
| 482 pageLogicalHeightChanged, | 482 pageLogicalHeightChanged, |
| 483 hasSpecifiedPageLogicalHeight); | 483 hasSpecifiedPageLogicalHeight); |
| 484 if (pageLogicalHeightChanged) | 484 if (pageLogicalHeightChanged) |
| 485 relayoutChildren = true; | 485 relayoutChildren = true; |
| 486 | 486 |
| 487 LayoutState state(*this, pageLogicalHeight, pageLogicalHeightChanged, | 487 LayoutState state(*this, pageLogicalHeight, logicalWidthChanged); |
| 488 logicalWidthChanged); | |
| 489 | 488 |
| 490 if (m_paginationStateChanged) { | 489 if (m_paginationStateChanged) { |
| 491 // We now need a deep layout to clean up struts after pagination, if we | 490 // We now need a deep layout to clean up struts after pagination, if we |
| 492 // just ceased to be paginated, or, if we just became paginated on the | 491 // just ceased to be paginated, or, if we just became paginated on the |
| 493 // other hand, we now need the deep layout, to insert pagination struts. | 492 // other hand, we now need the deep layout, to insert pagination struts. |
| 494 m_paginationStateChanged = false; | 493 m_paginationStateChanged = false; |
| 495 state.setPaginationStateChanged(); | 494 state.setPaginationStateChanged(); |
| 496 } | 495 } |
| 497 | 496 |
| 498 // We use four values, maxTopPos, maxTopNeg, maxBottomPos, and maxBottomNeg, | 497 // We use four values, maxTopPos, maxTopNeg, maxBottomPos, and maxBottomNeg, |
| (...skipping 3027 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3526 FloatingObjectSetIterator it = | 3525 FloatingObjectSetIterator it = |
| 3527 floatingObjectSet.find<FloatingObjectHashTranslator>(&floatBox); | 3526 floatingObjectSet.find<FloatingObjectHashTranslator>(&floatBox); |
| 3528 if (it != floatingObjectSet.end()) | 3527 if (it != floatingObjectSet.end()) |
| 3529 return it->get(); | 3528 return it->get(); |
| 3530 } | 3529 } |
| 3531 | 3530 |
| 3532 // Create the special object entry & append it to the list | 3531 // Create the special object entry & append it to the list |
| 3533 | 3532 |
| 3534 std::unique_ptr<FloatingObject> newObj = FloatingObject::create(&floatBox); | 3533 std::unique_ptr<FloatingObject> newObj = FloatingObject::create(&floatBox); |
| 3535 | 3534 |
| 3536 // Our location is irrelevant if we're unsplittable or no pagination is in | 3535 // TODO(mstensho): Avoid laying out before positioning the object, as that's |
| 3537 // effect. Just go ahead and lay out the float. | 3536 // bad for pagination. |
| 3538 bool isChildLayoutBlock = floatBox.isLayoutBlock(); | |
| 3539 if (isChildLayoutBlock && !floatBox.needsLayout() && | |
| 3540 view()->layoutState()->pageLogicalHeightChanged()) | |
| 3541 floatBox.setChildNeedsLayout(MarkOnlyThis); | |
| 3542 | |
| 3543 floatBox.layoutIfNeeded(); | 3537 floatBox.layoutIfNeeded(); |
| 3544 | 3538 |
| 3545 setLogicalWidthForFloat(*newObj, logicalWidthForChild(floatBox) + | 3539 setLogicalWidthForFloat(*newObj, logicalWidthForChild(floatBox) + |
| 3546 marginStartForChild(floatBox) + | 3540 marginStartForChild(floatBox) + |
| 3547 marginEndForChild(floatBox)); | 3541 marginEndForChild(floatBox)); |
| 3548 | 3542 |
| 3549 return m_floatingObjects->add(std::move(newObj)); | 3543 return m_floatingObjects->add(std::move(newObj)); |
| 3550 } | 3544 } |
| 3551 | 3545 |
| 3552 void LayoutBlockFlow::removeFloatingObject(LayoutBox* floatBox) { | 3546 void LayoutBlockFlow::removeFloatingObject(LayoutBox* floatBox) { |
| (...skipping 997 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4550 return LayoutBlock::invalidatePaintIfNeeded(paintInvalidationState); | 4544 return LayoutBlock::invalidatePaintIfNeeded(paintInvalidationState); |
| 4551 } | 4545 } |
| 4552 | 4546 |
| 4553 void LayoutBlockFlow::invalidateDisplayItemClients( | 4547 void LayoutBlockFlow::invalidateDisplayItemClients( |
| 4554 PaintInvalidationReason invalidationReason) const { | 4548 PaintInvalidationReason invalidationReason) const { |
| 4555 BlockFlowPaintInvalidator(*this).invalidateDisplayItemClients( | 4549 BlockFlowPaintInvalidator(*this).invalidateDisplayItemClients( |
| 4556 invalidationReason); | 4550 invalidationReason); |
| 4557 } | 4551 } |
| 4558 | 4552 |
| 4559 } // namespace blink | 4553 } // namespace blink |
| OLD | NEW |