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

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

Issue 439063002: flexbox: incorrect flexbox height with overflow:auto on flex item (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Addressing the nit Created 6 years, 4 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
« no previous file with comments | « Source/core/rendering/RenderFlexibleBox.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 559 matching lines...) Expand 10 before | Expand all | Expand 10 after
570 LayoutUnit RenderFlexibleBox::crossAxisMarginExtentForChild(RenderBox* child) co nst 570 LayoutUnit RenderFlexibleBox::crossAxisMarginExtentForChild(RenderBox* child) co nst
571 { 571 {
572 return isHorizontalFlow() ? child->marginHeight() : child->marginWidth(); 572 return isHorizontalFlow() ? child->marginHeight() : child->marginWidth();
573 } 573 }
574 574
575 LayoutUnit RenderFlexibleBox::crossAxisScrollbarExtent() const 575 LayoutUnit RenderFlexibleBox::crossAxisScrollbarExtent() const
576 { 576 {
577 return isHorizontalFlow() ? horizontalScrollbarHeight() : verticalScrollbarW idth(); 577 return isHorizontalFlow() ? horizontalScrollbarHeight() : verticalScrollbarW idth();
578 } 578 }
579 579
580 LayoutUnit RenderFlexibleBox::crossAxisScrollbarExtentForChild(RenderBox* child) const
581 {
582 return isHorizontalFlow() ? child->horizontalScrollbarHeight() : child->vert icalScrollbarWidth();
583 }
584
580 LayoutPoint RenderFlexibleBox::flowAwareLocationForChild(RenderBox* child) const 585 LayoutPoint RenderFlexibleBox::flowAwareLocationForChild(RenderBox* child) const
581 { 586 {
582 return isHorizontalFlow() ? child->location() : child->location().transposed Point(); 587 return isHorizontalFlow() ? child->location() : child->location().transposed Point();
583 } 588 }
584 589
585 void RenderFlexibleBox::setFlowAwareLocationForChild(RenderBox* child, const Lay outPoint& location) 590 void RenderFlexibleBox::setFlowAwareLocationForChild(RenderBox* child, const Lay outPoint& location)
586 { 591 {
587 if (isHorizontalFlow()) 592 if (isHorizontalFlow())
588 child->setLocation(location); 593 child->setLocation(location);
589 else 594 else
(...skipping 516 matching lines...) Expand 10 before | Expand all | Expand 10 after
1106 LayoutUnit childCrossAxisMarginBoxExtent; 1111 LayoutUnit childCrossAxisMarginBoxExtent;
1107 if (alignmentForChild(child) == ItemPositionBaseline && !hasAutoMarginsI nCrossAxis(child)) { 1112 if (alignmentForChild(child) == ItemPositionBaseline && !hasAutoMarginsI nCrossAxis(child)) {
1108 LayoutUnit ascent = marginBoxAscentForChild(child); 1113 LayoutUnit ascent = marginBoxAscentForChild(child);
1109 LayoutUnit descent = (crossAxisMarginExtentForChild(child) + crossAx isExtentForChild(child)) - ascent; 1114 LayoutUnit descent = (crossAxisMarginExtentForChild(child) + crossAx isExtentForChild(child)) - ascent;
1110 1115
1111 maxAscent = std::max(maxAscent, ascent); 1116 maxAscent = std::max(maxAscent, ascent);
1112 maxDescent = std::max(maxDescent, descent); 1117 maxDescent = std::max(maxDescent, descent);
1113 1118
1114 childCrossAxisMarginBoxExtent = maxAscent + maxDescent; 1119 childCrossAxisMarginBoxExtent = maxAscent + maxDescent;
1115 } else { 1120 } else {
1116 childCrossAxisMarginBoxExtent = crossAxisIntrinsicExtentForChild(chi ld) + crossAxisMarginExtentForChild(child); 1121 childCrossAxisMarginBoxExtent = crossAxisIntrinsicExtentForChild(chi ld) + crossAxisMarginExtentForChild(child) + crossAxisScrollbarExtentForChild(ch ild);
1117 } 1122 }
1118 if (!isColumnFlow()) 1123 if (!isColumnFlow())
1119 setLogicalHeight(std::max(logicalHeight(), crossAxisOffset + flowAwa reBorderAfter() + flowAwarePaddingAfter() + childCrossAxisMarginBoxExtent + cros sAxisScrollbarExtent())); 1124 setLogicalHeight(std::max(logicalHeight(), crossAxisOffset + flowAwa reBorderAfter() + flowAwarePaddingAfter() + childCrossAxisMarginBoxExtent + cros sAxisScrollbarExtent()));
1120 maxChildCrossAxisExtent = std::max(maxChildCrossAxisExtent, childCrossAx isMarginBoxExtent); 1125 maxChildCrossAxisExtent = std::max(maxChildCrossAxisExtent, childCrossAx isMarginBoxExtent);
1121 1126
1122 mainAxisOffset += flowAwareMarginStartForChild(child); 1127 mainAxisOffset += flowAwareMarginStartForChild(child);
1123 1128
1124 LayoutUnit childMainExtent = mainAxisExtentForChild(child); 1129 LayoutUnit childMainExtent = mainAxisExtentForChild(child);
1125 // In an RTL column situation, this will apply the margin-right/margin-e nd on the left. 1130 // In an RTL column situation, this will apply the margin-right/margin-e nd on the left.
1126 // This will be fixed later in flipForRightToLeftColumn. 1131 // This will be fixed later in flipForRightToLeftColumn.
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
1397 ASSERT(child); 1402 ASSERT(child);
1398 LayoutUnit lineCrossAxisExtent = lineContexts[lineNumber].crossAxisE xtent; 1403 LayoutUnit lineCrossAxisExtent = lineContexts[lineNumber].crossAxisE xtent;
1399 LayoutUnit originalOffset = lineContexts[lineNumber].crossAxisOffset - crossAxisStartEdge; 1404 LayoutUnit originalOffset = lineContexts[lineNumber].crossAxisOffset - crossAxisStartEdge;
1400 LayoutUnit newOffset = contentExtent - originalOffset - lineCrossAxi sExtent; 1405 LayoutUnit newOffset = contentExtent - originalOffset - lineCrossAxi sExtent;
1401 adjustAlignmentForChild(child, newOffset - originalOffset); 1406 adjustAlignmentForChild(child, newOffset - originalOffset);
1402 } 1407 }
1403 } 1408 }
1404 } 1409 }
1405 1410
1406 } 1411 }
OLDNEW
« no previous file with comments | « Source/core/rendering/RenderFlexibleBox.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698