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 671 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
682 mark_descendants_with_floats = true; | 682 mark_descendants_with_floats = true; |
683 } else if (UNLIKELY(new_logical_top.MightBeSaturated())) { | 683 } else if (UNLIKELY(new_logical_top.MightBeSaturated())) { |
684 // The logical top might be saturated for very large elements. Comparing | 684 // The logical top might be saturated for very large elements. Comparing |
685 // with the old logical top might then yield a false negative, as adding and | 685 // with the old logical top might then yield a false negative, as adding and |
686 // removing margins, borders etc. from a saturated number might yield | 686 // removing margins, borders etc. from a saturated number might yield |
687 // incorrect results. If this is the case, always mark for layout. | 687 // incorrect results. If this is the case, always mark for layout. |
688 mark_descendants_with_floats = true; | 688 mark_descendants_with_floats = true; |
689 } else if (!child.AvoidsFloats() || child.ShrinkToAvoidFloats()) { | 689 } else if (!child.AvoidsFloats() || child.ShrinkToAvoidFloats()) { |
690 // If an element might be affected by the presence of floats, then always | 690 // If an element might be affected by the presence of floats, then always |
691 // mark it for layout. | 691 // mark it for layout. |
692 if (std::max(previous_float_logical_bottom, LowestFloatLogicalBottom()) > | 692 LayoutUnit lowest_float = |
693 new_logical_top) | 693 std::max(previous_float_logical_bottom, LowestFloatLogicalBottom()); |
| 694 lowest_float = std::max(lowest_float, child.LowestFloatLogicalBottom()); |
| 695 if (lowest_float > new_logical_top) |
694 mark_descendants_with_floats = true; | 696 mark_descendants_with_floats = true; |
695 } | 697 } |
696 | 698 |
697 if (mark_descendants_with_floats) | 699 if (mark_descendants_with_floats) |
698 child.MarkAllDescendantsWithFloatsForLayout(); | 700 child.MarkAllDescendantsWithFloatsForLayout(); |
699 } | 701 } |
700 | 702 |
701 bool LayoutBlockFlow::PositionAndLayoutOnceIfNeeded( | 703 bool LayoutBlockFlow::PositionAndLayoutOnceIfNeeded( |
702 LayoutBox& child, | 704 LayoutBox& child, |
703 LayoutUnit new_logical_top, | 705 LayoutUnit new_logical_top, |
(...skipping 3951 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4655 return LayoutBlock::InvalidatePaintIfNeeded(paint_invalidation_state); | 4657 return LayoutBlock::InvalidatePaintIfNeeded(paint_invalidation_state); |
4656 } | 4658 } |
4657 | 4659 |
4658 void LayoutBlockFlow::InvalidateDisplayItemClients( | 4660 void LayoutBlockFlow::InvalidateDisplayItemClients( |
4659 PaintInvalidationReason invalidation_reason) const { | 4661 PaintInvalidationReason invalidation_reason) const { |
4660 BlockFlowPaintInvalidator(*this).InvalidateDisplayItemClients( | 4662 BlockFlowPaintInvalidator(*this).InvalidateDisplayItemClients( |
4661 invalidation_reason); | 4663 invalidation_reason); |
4662 } | 4664 } |
4663 | 4665 |
4664 } // namespace blink | 4666 } // namespace blink |
OLD | NEW |