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

Side by Side Diff: Source/core/rendering/RenderFlexibleBox.cpp

Issue 264963004: Mark when we may have been invalidated to early out on repaintTreeAfterLayout. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 7 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 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 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 226
227 void RenderFlexibleBox::layoutBlock(bool relayoutChildren) 227 void RenderFlexibleBox::layoutBlock(bool relayoutChildren)
228 { 228 {
229 ASSERT(needsLayout()); 229 ASSERT(needsLayout());
230 230
231 if (!relayoutChildren && simplifiedLayout()) 231 if (!relayoutChildren && simplifiedLayout())
232 return; 232 return;
233 233
234 LayoutRepainter repainter(*this, checkForRepaintDuringLayout()); 234 LayoutRepainter repainter(*this, checkForRepaintDuringLayout());
235 235
236 setMayNeedInvalidation(true);
237
236 if (updateLogicalWidthAndColumnWidth()) 238 if (updateLogicalWidthAndColumnWidth())
237 relayoutChildren = true; 239 relayoutChildren = true;
238 240
239 LayoutUnit previousHeight = logicalHeight(); 241 LayoutUnit previousHeight = logicalHeight();
240 setLogicalHeight(borderAndPaddingLogicalHeight() + scrollbarLogicalHeight()) ; 242 setLogicalHeight(borderAndPaddingLogicalHeight() + scrollbarLogicalHeight()) ;
241 243
242 { 244 {
243 LayoutStateMaintainer statePusher(*this, locationOffset()); 245 LayoutStateMaintainer statePusher(*this, locationOffset());
244 246
245 m_numberOfInFlowChildrenOnFirstLine = -1; 247 m_numberOfInFlowChildrenOnFirstLine = -1;
(...skipping 857 matching lines...) Expand 10 before | Expand all | Expand 10 after
1103 size_t seenInFlowPositionedChildren = 0; 1105 size_t seenInFlowPositionedChildren = 0;
1104 bool shouldFlipMainAxis = !isColumnFlow() && !isLeftToRightFlow(); 1106 bool shouldFlipMainAxis = !isColumnFlow() && !isLeftToRightFlow();
1105 for (size_t i = 0; i < children.size(); ++i) { 1107 for (size_t i = 0; i < children.size(); ++i) {
1106 RenderBox* child = children[i]; 1108 RenderBox* child = children[i];
1107 1109
1108 if (child->isOutOfFlowPositioned()) { 1110 if (child->isOutOfFlowPositioned()) {
1109 prepareChildForPositionedLayout(child, mainAxisOffset, crossAxisOffs et, FlipForRowReverse); 1111 prepareChildForPositionedLayout(child, mainAxisOffset, crossAxisOffs et, FlipForRowReverse);
1110 continue; 1112 continue;
1111 } 1113 }
1112 1114
1115 child->setMayNeedInvalidation(true);
1116
1113 LayoutUnit childPreferredSize = childSizes[i] + mainAxisBorderAndPadding ExtentForChild(child); 1117 LayoutUnit childPreferredSize = childSizes[i] + mainAxisBorderAndPadding ExtentForChild(child);
1114 setLogicalOverrideSize(child, childPreferredSize); 1118 setLogicalOverrideSize(child, childPreferredSize);
1115 if (childPreferredSize != mainAxisExtentForChild(child)) { 1119 if (childPreferredSize != mainAxisExtentForChild(child)) {
1116 child->setChildNeedsLayout(MarkOnlyThis); 1120 child->setChildNeedsLayout(MarkOnlyThis);
1117 } else { 1121 } else {
1118 // To avoid double applying margin changes in updateAutoMarginsInCro ssAxis, we reset the margins here. 1122 // To avoid double applying margin changes in updateAutoMarginsInCro ssAxis, we reset the margins here.
1119 resetAutoMarginsAndLogicalTopInCrossAxis(child); 1123 resetAutoMarginsAndLogicalTopInCrossAxis(child);
1120 } 1124 }
1121 // We may have already forced relayout for orthogonal flowing children i n preferredMainAxisContentExtentForChild. 1125 // We may have already forced relayout for orthogonal flowing children i n preferredMainAxisContentExtentForChild.
1122 bool forceChildRelayout = relayoutChildren && !childPreferredMainAxisCon tentExtentRequiresLayout(child, hasInfiniteLineLength); 1126 bool forceChildRelayout = relayoutChildren && !childPreferredMainAxisCon tentExtentRequiresLayout(child, hasInfiniteLineLength);
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after
1408 ASSERT(child); 1412 ASSERT(child);
1409 LayoutUnit lineCrossAxisExtent = lineContexts[lineNumber].crossAxisE xtent; 1413 LayoutUnit lineCrossAxisExtent = lineContexts[lineNumber].crossAxisE xtent;
1410 LayoutUnit originalOffset = lineContexts[lineNumber].crossAxisOffset - crossAxisStartEdge; 1414 LayoutUnit originalOffset = lineContexts[lineNumber].crossAxisOffset - crossAxisStartEdge;
1411 LayoutUnit newOffset = contentExtent - originalOffset - lineCrossAxi sExtent; 1415 LayoutUnit newOffset = contentExtent - originalOffset - lineCrossAxi sExtent;
1412 adjustAlignmentForChild(child, newOffset - originalOffset); 1416 adjustAlignmentForChild(child, newOffset - originalOffset);
1413 } 1417 }
1414 } 1418 }
1415 } 1419 }
1416 1420
1417 } 1421 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698