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

Unified Diff: third_party/WebKit/Source/core/layout/LayoutFlexibleBox.cpp

Issue 1268753002: [css-flexbox] Implementing new CSS Box Alignment values (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Patch rebased and applied suggested changes. Created 5 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/layout/LayoutFlexibleBox.cpp
diff --git a/third_party/WebKit/Source/core/layout/LayoutFlexibleBox.cpp b/third_party/WebKit/Source/core/layout/LayoutFlexibleBox.cpp
index 2ce5335c7c952e25732ab4126a4289b13b10babe..46c3e1665db2e76535c546e58f79773fd94fa2f7 100644
--- a/third_party/WebKit/Source/core/layout/LayoutFlexibleBox.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutFlexibleBox.cpp
@@ -1418,9 +1418,15 @@ void LayoutFlexibleBox::alignChildren(const Vector<LineContext>& lineContexts)
adjustAlignmentForChild(*child, availableAlignmentSpaceForChild(lineCrossAxisExtent, *child));
break;
}
+ case ItemPositionStart:
case ItemPositionFlexStart:
+ // We treat flex-start the same as start because alignmentForChild fixed
+ // it up appropriately
break;
+ case ItemPositionEnd:
case ItemPositionFlexEnd:
+ // We treat flex-end the same as end because alignmentForChild fixed
+ // it up appropriately
adjustAlignmentForChild(*child, availableAlignmentSpaceForChild(lineCrossAxisExtent, *child));
break;
case ItemPositionCenter:
@@ -1437,15 +1443,30 @@ void LayoutFlexibleBox::alignChildren(const Vector<LineContext>& lineContexts)
minMarginAfterBaseline = std::min(minMarginAfterBaseline, availableAlignmentSpaceForChild(lineCrossAxisExtent, *child) - startOffset);
break;
}
- case ItemPositionLastBaseline:
- case ItemPositionSelfStart:
- case ItemPositionSelfEnd:
- case ItemPositionStart:
- case ItemPositionEnd:
+ case ItemPositionSelfStart: {
+ bool hasSameCrossStartEdges = hasOrthogonalFlow(*child) ? child->styleRef().isLeftToRightDirection() == styleRef().isLeftToRightDirection() : child->styleRef().isFlippedBlocksWritingMode() == styleRef().isFlippedBlocksWritingMode();
+ if (!hasSameCrossStartEdges)
+ adjustAlignmentForChild(*child, availableAlignmentSpaceForChild(lineCrossAxisExtent, *child));
+ break;
+ }
+ case ItemPositionSelfEnd: {
+ bool hasSameCrossStartEdges = hasOrthogonalFlow(*child) ? child->styleRef().isLeftToRightDirection() == styleRef().isLeftToRightDirection() : child->styleRef().isFlippedBlocksWritingMode() == styleRef().isFlippedBlocksWritingMode();
+ if (hasSameCrossStartEdges)
+ adjustAlignmentForChild(*child, availableAlignmentSpaceForChild(lineCrossAxisExtent, *child));
+ break;
+ }
case ItemPositionLeft:
+ // Cross-axis is only parallel to container's inline-axis when column-flow is used.
+ if (isColumnFlow() && !style()->isLeftToRightDirection())
cbiesinger 2015/12/01 00:12:49 is that true? shouldn't it be if (!isHorizontalFlo
+ adjustAlignmentForChild(*child, availableAlignmentSpaceForChild(lineCrossAxisExtent, *child));
+ break;
case ItemPositionRight:
- // FIXME: Implement these (https://crbug.com/507690). The extended grammar
- // is not enabled by default so we shouldn't hit this codepath.
+ // Cross-axis is only parallel to container's inline-axis when column-flow is used.
+ if (isColumnFlow() && style()->isLeftToRightDirection())
+ adjustAlignmentForChild(*child, availableAlignmentSpaceForChild(lineCrossAxisExtent, *child));
+ break;
+ case ItemPositionLastBaseline: // TODO (lajava): This feature is at-risk of being dropped during the CR period.
cbiesinger 2015/12/01 00:12:49 if we're still parsing it, it seems better not to
+ default:
ASSERT_NOT_REACHED();
break;
}

Powered by Google App Engine
This is Rietveld 408576698