| OLD | NEW |
| 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 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 174 int LayoutFlexibleBox::baselinePosition(FontBaseline, bool, LineDirectionMode di
rection, LinePositionMode mode) const | 174 int LayoutFlexibleBox::baselinePosition(FontBaseline, bool, LineDirectionMode di
rection, LinePositionMode mode) const |
| 175 { | 175 { |
| 176 ASSERT(mode == PositionOnContainingLine); | 176 ASSERT(mode == PositionOnContainingLine); |
| 177 int baseline = firstLineBoxBaseline(); | 177 int baseline = firstLineBoxBaseline(); |
| 178 if (baseline == -1) | 178 if (baseline == -1) |
| 179 baseline = synthesizedBaselineFromContentBox(*this, direction); | 179 baseline = synthesizedBaselineFromContentBox(*this, direction); |
| 180 | 180 |
| 181 return beforeMarginInLineDirection(direction) + baseline; | 181 return beforeMarginInLineDirection(direction) + baseline; |
| 182 } | 182 } |
| 183 | 183 |
| 184 static const StyleContentAlignmentData& normalValueBehavior() |
| 185 { |
| 186 // The justify-content property applies along the main axis, but since flexi
ng |
| 187 // in the main axis is controlled by flex, stretch behaves as flex-start (ig
noring |
| 188 // the specified fallback alignment, if any). |
| 189 // https://drafts.csswg.org/css-align/#distribution-flex |
| 190 static const StyleContentAlignmentData normalBehavior = {ContentPositionNorm
al, ContentDistributionStretch}; |
| 191 return normalBehavior; |
| 192 } |
| 193 |
| 184 int LayoutFlexibleBox::firstLineBoxBaseline() const | 194 int LayoutFlexibleBox::firstLineBoxBaseline() const |
| 185 { | 195 { |
| 186 if (isWritingModeRoot() || m_numberOfInFlowChildrenOnFirstLine <= 0) | 196 if (isWritingModeRoot() || m_numberOfInFlowChildrenOnFirstLine <= 0) |
| 187 return -1; | 197 return -1; |
| 188 LayoutBox* baselineChild = nullptr; | 198 LayoutBox* baselineChild = nullptr; |
| 189 int childNumber = 0; | 199 int childNumber = 0; |
| 190 for (LayoutBox* child = m_orderIterator.first(); child; child = m_orderItera
tor.next()) { | 200 for (LayoutBox* child = m_orderIterator.first(); child; child = m_orderItera
tor.next()) { |
| 191 if (child->isOutOfFlowPositioned()) | 201 if (child->isOutOfFlowPositioned()) |
| 192 continue; | 202 continue; |
| 193 if (alignmentForChild(*child) == ItemPositionBaseline && !hasAutoMargins
InCrossAxis(*child)) { | 203 if (alignmentForChild(*child) == ItemPositionBaseline && !hasAutoMargins
InCrossAxis(*child)) { |
| (...skipping 1101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1295 { | 1305 { |
| 1296 if (isHorizontalFlow()) | 1306 if (isHorizontalFlow()) |
| 1297 return child.styleRef().overflowY(); | 1307 return child.styleRef().overflowY(); |
| 1298 return child.styleRef().overflowX(); | 1308 return child.styleRef().overflowX(); |
| 1299 } | 1309 } |
| 1300 | 1310 |
| 1301 void LayoutFlexibleBox::layoutAndPlaceChildren(LayoutUnit& crossAxisOffset, cons
t OrderedFlexItemList& children, const Vector<LayoutUnit, 16>& childSizes, Layou
tUnit availableFreeSpace, bool relayoutChildren, SubtreeLayoutScope& layoutScope
, Vector<LineContext>& lineContexts) | 1311 void LayoutFlexibleBox::layoutAndPlaceChildren(LayoutUnit& crossAxisOffset, cons
t OrderedFlexItemList& children, const Vector<LayoutUnit, 16>& childSizes, Layou
tUnit availableFreeSpace, bool relayoutChildren, SubtreeLayoutScope& layoutScope
, Vector<LineContext>& lineContexts) |
| 1302 { | 1312 { |
| 1303 ASSERT(childSizes.size() == children.size()); | 1313 ASSERT(childSizes.size() == children.size()); |
| 1304 | 1314 |
| 1315 ContentPosition position = styleRef().resolvedJustifyContentPosition(normalV
alueBehavior()); |
| 1316 ContentDistributionType distribution = styleRef().resolvedJustifyContentDist
ribution(normalValueBehavior()); |
| 1317 |
| 1305 size_t numberOfChildrenForJustifyContent = numberOfInFlowPositionedChildren(
children); | 1318 size_t numberOfChildrenForJustifyContent = numberOfInFlowPositionedChildren(
children); |
| 1306 LayoutUnit autoMarginOffset = autoMarginOffsetInMainAxis(children, available
FreeSpace); | 1319 LayoutUnit autoMarginOffset = autoMarginOffsetInMainAxis(children, available
FreeSpace); |
| 1307 LayoutUnit mainAxisOffset = flowAwareBorderStart() + flowAwarePaddingStart()
; | 1320 LayoutUnit mainAxisOffset = flowAwareBorderStart() + flowAwarePaddingStart()
; |
| 1308 mainAxisOffset += initialJustifyContentOffset(availableFreeSpace, style()->j
ustifyContentPosition(), style()->justifyContentDistribution(), numberOfChildren
ForJustifyContent); | 1321 mainAxisOffset += initialJustifyContentOffset(availableFreeSpace, position,
distribution, numberOfChildrenForJustifyContent); |
| 1309 if (style()->flexDirection() == FlowRowReverse) | 1322 if (style()->flexDirection() == FlowRowReverse) |
| 1310 mainAxisOffset += isHorizontalFlow() ? verticalScrollbarWidth() : horizo
ntalScrollbarHeight(); | 1323 mainAxisOffset += isHorizontalFlow() ? verticalScrollbarWidth() : horizo
ntalScrollbarHeight(); |
| 1311 | 1324 |
| 1312 LayoutUnit totalMainExtent = mainAxisExtent(); | 1325 LayoutUnit totalMainExtent = mainAxisExtent(); |
| 1313 LayoutUnit maxAscent, maxDescent; // Used when align-items: baseline. | 1326 LayoutUnit maxAscent, maxDescent; // Used when align-items: baseline. |
| 1314 LayoutUnit maxChildCrossAxisExtent; | 1327 LayoutUnit maxChildCrossAxisExtent; |
| 1315 size_t seenInFlowPositionedChildren = 0; | 1328 size_t seenInFlowPositionedChildren = 0; |
| 1316 bool shouldFlipMainAxis = !isColumnFlow() && !isLeftToRightFlow(); | 1329 bool shouldFlipMainAxis = !isColumnFlow() && !isLeftToRightFlow(); |
| 1317 for (size_t i = 0; i < children.size(); ++i) { | 1330 for (size_t i = 0; i < children.size(); ++i) { |
| 1318 LayoutBox* child = children[i]; | 1331 LayoutBox* child = children[i]; |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1365 // In an RTL column situation, this will apply the margin-right/margin-e
nd on the left. | 1378 // In an RTL column situation, this will apply the margin-right/margin-e
nd on the left. |
| 1366 // This will be fixed later in flipForRightToLeftColumn. | 1379 // This will be fixed later in flipForRightToLeftColumn. |
| 1367 LayoutPoint childLocation(shouldFlipMainAxis ? totalMainExtent - mainAxi
sOffset - childMainExtent : mainAxisOffset, | 1380 LayoutPoint childLocation(shouldFlipMainAxis ? totalMainExtent - mainAxi
sOffset - childMainExtent : mainAxisOffset, |
| 1368 crossAxisOffset + flowAwareMarginBeforeForChild(*child)); | 1381 crossAxisOffset + flowAwareMarginBeforeForChild(*child)); |
| 1369 | 1382 |
| 1370 setFlowAwareLocationForChild(*child, childLocation); | 1383 setFlowAwareLocationForChild(*child, childLocation); |
| 1371 mainAxisOffset += childMainExtent + flowAwareMarginEndForChild(*child); | 1384 mainAxisOffset += childMainExtent + flowAwareMarginEndForChild(*child); |
| 1372 | 1385 |
| 1373 ++seenInFlowPositionedChildren; | 1386 ++seenInFlowPositionedChildren; |
| 1374 if (seenInFlowPositionedChildren < numberOfChildrenForJustifyContent) | 1387 if (seenInFlowPositionedChildren < numberOfChildrenForJustifyContent) |
| 1375 mainAxisOffset += justifyContentSpaceBetweenChildren(availableFreeSp
ace, style()->justifyContentDistribution(), numberOfChildrenForJustifyContent); | 1388 mainAxisOffset += justifyContentSpaceBetweenChildren(availableFreeSp
ace, distribution, numberOfChildrenForJustifyContent); |
| 1376 } | 1389 } |
| 1377 | 1390 |
| 1378 if (isColumnFlow()) | 1391 if (isColumnFlow()) |
| 1379 setLogicalHeight(std::max(logicalHeight(), mainAxisOffset + flowAwareBor
derEnd() + flowAwarePaddingEnd() + scrollbarLogicalHeight())); | 1392 setLogicalHeight(std::max(logicalHeight(), mainAxisOffset + flowAwareBor
derEnd() + flowAwarePaddingEnd() + scrollbarLogicalHeight())); |
| 1380 | 1393 |
| 1381 if (style()->flexDirection() == FlowColumnReverse) { | 1394 if (style()->flexDirection() == FlowColumnReverse) { |
| 1382 // We have to do an extra pass for column-reverse to reposition the flex
items since the start depends | 1395 // We have to do an extra pass for column-reverse to reposition the flex
items since the start depends |
| 1383 // on the height of the flexbox, which we only know after we've position
ed all the flex items. | 1396 // on the height of the flexbox, which we only know after we've position
ed all the flex items. |
| 1384 updateLogicalHeight(); | 1397 updateLogicalHeight(); |
| 1385 layoutColumnReverse(children, crossAxisOffset, availableFreeSpace); | 1398 layoutColumnReverse(children, crossAxisOffset, availableFreeSpace); |
| 1386 } | 1399 } |
| 1387 | 1400 |
| 1388 if (m_numberOfInFlowChildrenOnFirstLine == -1) | 1401 if (m_numberOfInFlowChildrenOnFirstLine == -1) |
| 1389 m_numberOfInFlowChildrenOnFirstLine = seenInFlowPositionedChildren; | 1402 m_numberOfInFlowChildrenOnFirstLine = seenInFlowPositionedChildren; |
| 1390 lineContexts.append(LineContext(crossAxisOffset, maxChildCrossAxisExtent, ch
ildren.size(), maxAscent)); | 1403 lineContexts.append(LineContext(crossAxisOffset, maxChildCrossAxisExtent, ch
ildren.size(), maxAscent)); |
| 1391 crossAxisOffset += maxChildCrossAxisExtent; | 1404 crossAxisOffset += maxChildCrossAxisExtent; |
| 1392 } | 1405 } |
| 1393 | 1406 |
| 1394 void LayoutFlexibleBox::layoutColumnReverse(const OrderedFlexItemList& children,
LayoutUnit crossAxisOffset, LayoutUnit availableFreeSpace) | 1407 void LayoutFlexibleBox::layoutColumnReverse(const OrderedFlexItemList& children,
LayoutUnit crossAxisOffset, LayoutUnit availableFreeSpace) |
| 1395 { | 1408 { |
| 1409 ContentPosition position = styleRef().resolvedJustifyContentPosition(normalV
alueBehavior()); |
| 1410 ContentDistributionType distribution = styleRef().resolvedJustifyContentDist
ribution(normalValueBehavior()); |
| 1411 |
| 1396 // This is similar to the logic in layoutAndPlaceChildren, except we place t
he children | 1412 // This is similar to the logic in layoutAndPlaceChildren, except we place t
he children |
| 1397 // starting from the end of the flexbox. We also don't need to layout anythi
ng since we're | 1413 // starting from the end of the flexbox. We also don't need to layout anythi
ng since we're |
| 1398 // just moving the children to a new position. | 1414 // just moving the children to a new position. |
| 1399 size_t numberOfChildrenForJustifyContent = numberOfInFlowPositionedChildren(
children); | 1415 size_t numberOfChildrenForJustifyContent = numberOfInFlowPositionedChildren(
children); |
| 1400 LayoutUnit mainAxisOffset = logicalHeight() - flowAwareBorderEnd() - flowAwa
rePaddingEnd(); | 1416 LayoutUnit mainAxisOffset = logicalHeight() - flowAwareBorderEnd() - flowAwa
rePaddingEnd(); |
| 1401 mainAxisOffset -= initialJustifyContentOffset(availableFreeSpace, style()->j
ustifyContentPosition(), style()->justifyContentDistribution(), numberOfChildren
ForJustifyContent); | 1417 mainAxisOffset -= initialJustifyContentOffset(availableFreeSpace, position,
distribution, numberOfChildrenForJustifyContent); |
| 1402 mainAxisOffset -= isHorizontalFlow() ? verticalScrollbarWidth() : horizontal
ScrollbarHeight(); | 1418 mainAxisOffset -= isHorizontalFlow() ? verticalScrollbarWidth() : horizontal
ScrollbarHeight(); |
| 1403 | 1419 |
| 1404 size_t seenInFlowPositionedChildren = 0; | 1420 size_t seenInFlowPositionedChildren = 0; |
| 1405 for (size_t i = 0; i < children.size(); ++i) { | 1421 for (size_t i = 0; i < children.size(); ++i) { |
| 1406 LayoutBox* child = children[i]; | 1422 LayoutBox* child = children[i]; |
| 1407 | 1423 |
| 1408 if (child->isOutOfFlowPositioned()) { | 1424 if (child->isOutOfFlowPositioned()) { |
| 1409 child->layer()->setStaticBlockPosition(mainAxisOffset); | 1425 child->layer()->setStaticBlockPosition(mainAxisOffset); |
| 1410 continue; | 1426 continue; |
| 1411 } | 1427 } |
| 1412 mainAxisOffset -= mainAxisExtentForChild(*child) + flowAwareMarginEndFor
Child(*child); | 1428 mainAxisOffset -= mainAxisExtentForChild(*child) + flowAwareMarginEndFor
Child(*child); |
| 1413 | 1429 |
| 1414 setFlowAwareLocationForChild(*child, LayoutPoint(mainAxisOffset, crossAx
isOffset + flowAwareMarginBeforeForChild(*child))); | 1430 setFlowAwareLocationForChild(*child, LayoutPoint(mainAxisOffset, crossAx
isOffset + flowAwareMarginBeforeForChild(*child))); |
| 1415 | 1431 |
| 1416 mainAxisOffset -= flowAwareMarginStartForChild(*child); | 1432 mainAxisOffset -= flowAwareMarginStartForChild(*child); |
| 1417 | 1433 |
| 1418 ++seenInFlowPositionedChildren; | 1434 ++seenInFlowPositionedChildren; |
| 1419 if (seenInFlowPositionedChildren < numberOfChildrenForJustifyContent) | 1435 if (seenInFlowPositionedChildren < numberOfChildrenForJustifyContent) |
| 1420 mainAxisOffset -= justifyContentSpaceBetweenChildren(availableFreeSp
ace, style()->justifyContentDistribution(), numberOfChildrenForJustifyContent); | 1436 mainAxisOffset -= justifyContentSpaceBetweenChildren(availableFreeSp
ace, distribution, numberOfChildrenForJustifyContent); |
| 1421 } | 1437 } |
| 1422 } | 1438 } |
| 1423 | 1439 |
| 1424 static LayoutUnit initialAlignContentOffset(LayoutUnit availableFreeSpace, Conte
ntPosition alignContent, ContentDistributionType alignContentDistribution, unsig
ned numberOfLines) | 1440 static LayoutUnit initialAlignContentOffset(LayoutUnit availableFreeSpace, Conte
ntPosition alignContent, ContentDistributionType alignContentDistribution, unsig
ned numberOfLines) |
| 1425 { | 1441 { |
| 1426 if (numberOfLines <= 1) | 1442 if (numberOfLines <= 1) |
| 1427 return LayoutUnit(); | 1443 return LayoutUnit(); |
| 1428 if (alignContent == ContentPositionFlexEnd) | 1444 if (alignContent == ContentPositionFlexEnd) |
| 1429 return availableFreeSpace; | 1445 return availableFreeSpace; |
| 1430 if (alignContent == ContentPositionCenter) | 1446 if (alignContent == ContentPositionCenter) |
| (...skipping 13 matching lines...) Expand all Loading... |
| 1444 if (alignContentDistribution == ContentDistributionSpaceBetween) | 1460 if (alignContentDistribution == ContentDistributionSpaceBetween) |
| 1445 return availableFreeSpace / (numberOfLines - 1); | 1461 return availableFreeSpace / (numberOfLines - 1); |
| 1446 if (alignContentDistribution == ContentDistributionSpaceAround || alignC
ontentDistribution == ContentDistributionStretch) | 1462 if (alignContentDistribution == ContentDistributionSpaceAround || alignC
ontentDistribution == ContentDistributionStretch) |
| 1447 return availableFreeSpace / numberOfLines; | 1463 return availableFreeSpace / numberOfLines; |
| 1448 } | 1464 } |
| 1449 return LayoutUnit(); | 1465 return LayoutUnit(); |
| 1450 } | 1466 } |
| 1451 | 1467 |
| 1452 void LayoutFlexibleBox::alignFlexLines(Vector<LineContext>& lineContexts) | 1468 void LayoutFlexibleBox::alignFlexLines(Vector<LineContext>& lineContexts) |
| 1453 { | 1469 { |
| 1470 ContentPosition position = styleRef().resolvedAlignContentPosition(normalVal
ueBehavior()); |
| 1471 ContentDistributionType distribution = styleRef().resolvedAlignContentDistri
bution(normalValueBehavior()); |
| 1472 |
| 1454 // If we have a single line flexbox or a multiline line flexbox with only on
e flex line, | 1473 // If we have a single line flexbox or a multiline line flexbox with only on
e flex line, |
| 1455 // the line height is all the available space. | 1474 // the line height is all the available space. |
| 1456 // For flex-direction: row, this means we need to use the height, so we do t
his after calling updateLogicalHeight. | 1475 // For flex-direction: row, this means we need to use the height, so we do t
his after calling updateLogicalHeight. |
| 1457 if (lineContexts.size() == 1) { | 1476 if (lineContexts.size() == 1) { |
| 1458 lineContexts[0].crossAxisExtent = crossAxisContentExtent(); | 1477 lineContexts[0].crossAxisExtent = crossAxisContentExtent(); |
| 1459 return; | 1478 return; |
| 1460 } | 1479 } |
| 1461 | 1480 |
| 1462 if (style()->alignContentPosition() == ContentPositionFlexStart) | 1481 if (position == ContentPositionFlexStart) |
| 1463 return; | 1482 return; |
| 1464 | 1483 |
| 1465 LayoutUnit availableCrossAxisSpace = crossAxisContentExtent(); | 1484 LayoutUnit availableCrossAxisSpace = crossAxisContentExtent(); |
| 1466 for (size_t i = 0; i < lineContexts.size(); ++i) | 1485 for (size_t i = 0; i < lineContexts.size(); ++i) |
| 1467 availableCrossAxisSpace -= lineContexts[i].crossAxisExtent; | 1486 availableCrossAxisSpace -= lineContexts[i].crossAxisExtent; |
| 1468 | 1487 |
| 1469 LayoutBox* child = m_orderIterator.first(); | 1488 LayoutBox* child = m_orderIterator.first(); |
| 1470 LayoutUnit lineOffset = initialAlignContentOffset(availableCrossAxisSpace, s
tyle()->alignContentPosition(), style()->alignContentDistribution(), lineContext
s.size()); | 1489 LayoutUnit lineOffset = initialAlignContentOffset(availableCrossAxisSpace, p
osition, distribution, lineContexts.size()); |
| 1471 for (unsigned lineNumber = 0; lineNumber < lineContexts.size(); ++lineNumber
) { | 1490 for (unsigned lineNumber = 0; lineNumber < lineContexts.size(); ++lineNumber
) { |
| 1472 lineContexts[lineNumber].crossAxisOffset += lineOffset; | 1491 lineContexts[lineNumber].crossAxisOffset += lineOffset; |
| 1473 for (size_t childNumber = 0; childNumber < lineContexts[lineNumber].numb
erOfChildren; ++childNumber, child = m_orderIterator.next()) | 1492 for (size_t childNumber = 0; childNumber < lineContexts[lineNumber].numb
erOfChildren; ++childNumber, child = m_orderIterator.next()) |
| 1474 adjustAlignmentForChild(*child, lineOffset); | 1493 adjustAlignmentForChild(*child, lineOffset); |
| 1475 | 1494 |
| 1476 if (style()->alignContentDistribution() == ContentDistributionStretch &&
availableCrossAxisSpace > 0) | 1495 if (distribution == ContentDistributionStretch && availableCrossAxisSpac
e > 0) |
| 1477 lineContexts[lineNumber].crossAxisExtent += availableCrossAxisSpace
/ static_cast<unsigned>(lineContexts.size()); | 1496 lineContexts[lineNumber].crossAxisExtent += availableCrossAxisSpace
/ static_cast<unsigned>(lineContexts.size()); |
| 1478 | 1497 |
| 1479 lineOffset += alignContentSpaceBetweenChildren(availableCrossAxisSpace,
style()->alignContentDistribution(), lineContexts.size()); | 1498 lineOffset += alignContentSpaceBetweenChildren(availableCrossAxisSpace,
distribution, lineContexts.size()); |
| 1480 } | 1499 } |
| 1481 } | 1500 } |
| 1482 | 1501 |
| 1483 void LayoutFlexibleBox::adjustAlignmentForChild(LayoutBox& child, LayoutUnit del
ta) | 1502 void LayoutFlexibleBox::adjustAlignmentForChild(LayoutBox& child, LayoutUnit del
ta) |
| 1484 { | 1503 { |
| 1485 if (child.isOutOfFlowPositioned()) { | 1504 if (child.isOutOfFlowPositioned()) { |
| 1486 LayoutUnit staticInlinePosition = child.layer()->staticInlinePosition(); | 1505 LayoutUnit staticInlinePosition = child.layer()->staticInlinePosition(); |
| 1487 LayoutUnit staticBlockPosition = child.layer()->staticBlockPosition(); | 1506 LayoutUnit staticBlockPosition = child.layer()->staticBlockPosition(); |
| 1488 LayoutUnit mainAxis = isColumnFlow() ? staticBlockPosition : staticInlin
ePosition; | 1507 LayoutUnit mainAxis = isColumnFlow() ? staticBlockPosition : staticInlin
ePosition; |
| 1489 LayoutUnit crossAxis = isColumnFlow() ? staticInlinePosition : staticBlo
ckPosition; | 1508 LayoutUnit crossAxis = isColumnFlow() ? staticInlinePosition : staticBlo
ckPosition; |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1637 ASSERT(child); | 1656 ASSERT(child); |
| 1638 LayoutUnit lineCrossAxisExtent = lineContexts[lineNumber].crossAxisE
xtent; | 1657 LayoutUnit lineCrossAxisExtent = lineContexts[lineNumber].crossAxisE
xtent; |
| 1639 LayoutUnit originalOffset = lineContexts[lineNumber].crossAxisOffset
- crossAxisStartEdge; | 1658 LayoutUnit originalOffset = lineContexts[lineNumber].crossAxisOffset
- crossAxisStartEdge; |
| 1640 LayoutUnit newOffset = contentExtent - originalOffset - lineCrossAxi
sExtent; | 1659 LayoutUnit newOffset = contentExtent - originalOffset - lineCrossAxi
sExtent; |
| 1641 adjustAlignmentForChild(*child, newOffset - originalOffset); | 1660 adjustAlignmentForChild(*child, newOffset - originalOffset); |
| 1642 } | 1661 } |
| 1643 } | 1662 } |
| 1644 } | 1663 } |
| 1645 | 1664 |
| 1646 } // namespace blink | 1665 } // namespace blink |
| OLD | NEW |