Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(179)

Side by Side Diff: third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp

Issue 2382733002: Introduce markChildForPaginationRelayoutIfNeeded(). (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 649 matching lines...) Expand 10 before | Expand all | Expand 10 after
660 LayoutUnit oldLogicalTop = logicalTopForChild(child); 660 LayoutUnit oldLogicalTop = logicalTopForChild(child);
661 setLogicalTopForChild(child, newLogicalTop); 661 setLogicalTopForChild(child, newLogicalTop);
662 662
663 SubtreeLayoutScope layoutScope(child); 663 SubtreeLayoutScope layoutScope(child);
664 if (!child.needsLayout()) { 664 if (!child.needsLayout()) {
665 if (newLogicalTop != oldLogicalTop && child.shrinkToAvoidFloats()) { 665 if (newLogicalTop != oldLogicalTop && child.shrinkToAvoidFloats()) {
666 // The child's width is affected by adjacent floats. When the child shifts to clear an 666 // The child's width is affected by adjacent floats. When the child shifts to clear an
667 // item, its width can change (because it has more available width). 667 // item, its width can change (because it has more available width).
668 layoutScope.setChildNeedsLayout(&child); 668 layoutScope.setChildNeedsLayout(&child);
669 } else { 669 } else {
670 child.markForPaginationRelayoutIfNeeded(layoutScope); 670 markChildForPaginationRelayoutIfNeeded(child, layoutScope);
671 } 671 }
672 } 672 }
673 673
674 if (!child.needsLayout()) 674 if (!child.needsLayout())
675 return false; 675 return false;
676 child.layout(); 676 child.layout();
677 return true; 677 return true;
678 } 678 }
679 679
680 void LayoutBlockFlow::insertForcedBreakBeforeChildIfNeeded(LayoutBox& child, Blo ckChildrenLayoutInfo& layoutInfo) 680 void LayoutBlockFlow::insertForcedBreakBeforeChildIfNeeded(LayoutBox& child, Blo ckChildrenLayoutInfo& layoutInfo)
(...skipping 2397 matching lines...) Expand 10 before | Expand all | Expand 10 after
3078 3078
3079 LayoutPoint floatLogicalLocation = computeLogicalLocationForFloat(floati ngObject, logicalTop); 3079 LayoutPoint floatLogicalLocation = computeLogicalLocationForFloat(floati ngObject, logicalTop);
3080 3080
3081 setLogicalLeftForFloat(floatingObject, floatLogicalLocation.x()); 3081 setLogicalLeftForFloat(floatingObject, floatLogicalLocation.x());
3082 3082
3083 setLogicalLeftForChild(*childBox, floatLogicalLocation.x() + childLogica lLeftMargin); 3083 setLogicalLeftForChild(*childBox, floatLogicalLocation.x() + childLogica lLeftMargin);
3084 setLogicalTopForChild(*childBox, floatLogicalLocation.y() + marginBefore ForChild(*childBox)); 3084 setLogicalTopForChild(*childBox, floatLogicalLocation.y() + marginBefore ForChild(*childBox));
3085 3085
3086 SubtreeLayoutScope layoutScope(*childBox); 3086 SubtreeLayoutScope layoutScope(*childBox);
3087 if (isPaginated && !childBox->needsLayout()) 3087 if (isPaginated && !childBox->needsLayout())
3088 childBox->markForPaginationRelayoutIfNeeded(layoutScope); 3088 markChildForPaginationRelayoutIfNeeded(*childBox, layoutScope);
3089 3089
3090 childBox->layoutIfNeeded(); 3090 childBox->layoutIfNeeded();
3091 3091
3092 if (isPaginated) { 3092 if (isPaginated) {
3093 LayoutBlockFlow* childBlockFlow = childBox->isLayoutBlockFlow() ? to LayoutBlockFlow(childBox) : nullptr; 3093 LayoutBlockFlow* childBlockFlow = childBox->isLayoutBlockFlow() ? to LayoutBlockFlow(childBox) : nullptr;
3094 // The first piece of content inside the child may have set a strut during layout. 3094 // The first piece of content inside the child may have set a strut during layout.
3095 LayoutUnit strut = childBlockFlow ? childBlockFlow->paginationStrutP ropagatedFromChild() : LayoutUnit(); 3095 LayoutUnit strut = childBlockFlow ? childBlockFlow->paginationStrutP ropagatedFromChild() : LayoutUnit();
3096 if (!strut) { 3096 if (!strut) {
3097 // Otherwise, if we are unsplittable and don't fit, move to the next page or column 3097 // Otherwise, if we are unsplittable and don't fit, move to the next page or column
3098 // if that helps the situation. 3098 // if that helps the situation.
(...skipping 678 matching lines...) Expand 10 before | Expand all | Expand 10 after
3777 3777
3778 return LayoutBlock::invalidatePaintIfNeeded(paintInvalidationState); 3778 return LayoutBlock::invalidatePaintIfNeeded(paintInvalidationState);
3779 } 3779 }
3780 3780
3781 void LayoutBlockFlow::invalidateDisplayItemClients(PaintInvalidationReason inval idationReason) const 3781 void LayoutBlockFlow::invalidateDisplayItemClients(PaintInvalidationReason inval idationReason) const
3782 { 3782 {
3783 BlockFlowPaintInvalidator(*this).invalidateDisplayItemClients(invalidationRe ason); 3783 BlockFlowPaintInvalidator(*this).invalidateDisplayItemClients(invalidationRe ason);
3784 } 3784 }
3785 3785
3786 } // namespace blink 3786 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/LayoutBlock.cpp ('k') | third_party/WebKit/Source/core/layout/LayoutBox.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698