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

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

Issue 2455093002: [css-align] Don't resolve 'auto' values for computed style. (Closed)
Patch Set: 'auto' is not valid for justify-items. Created 3 years, 6 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) 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 307 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 return flex_direction == 318 return flex_direction ==
319 (Style()->IsLeftToRightDirection() ? kFlowRowReverse : kFlowRow); 319 (Style()->IsLeftToRightDirection() ? kFlowRowReverse : kFlowRow);
320 return flex_direction == kFlowColumnReverse; 320 return flex_direction == kFlowColumnReverse;
321 } 321 }
322 322
323 void LayoutFlexibleBox::RemoveChild(LayoutObject* child) { 323 void LayoutFlexibleBox::RemoveChild(LayoutObject* child) {
324 LayoutBlock::RemoveChild(child); 324 LayoutBlock::RemoveChild(child);
325 intrinsic_size_along_main_axis_.erase(child); 325 intrinsic_size_along_main_axis_.erase(child);
326 } 326 }
327 327
328 // TODO (lajava): Is this function still needed ? Every time the flex
329 // container's align-items value changes we propagate the diff to its children
330 // (see ComputedStyle::stylePropagationDiff).
331 void LayoutFlexibleBox::StyleDidChange(StyleDifference diff, 328 void LayoutFlexibleBox::StyleDidChange(StyleDifference diff,
332 const ComputedStyle* old_style) { 329 const ComputedStyle* old_style) {
333 LayoutBlock::StyleDidChange(diff, old_style); 330 LayoutBlock::StyleDidChange(diff, old_style);
334 331
335 if (old_style && old_style->AlignItemsPosition() == kItemPositionStretch && 332 if (old_style &&
333 old_style->ResolvedAlignItems(SelfAlignmentNormalBehavior())
334 .GetPosition() == kItemPositionStretch &&
336 diff.NeedsFullLayout()) { 335 diff.NeedsFullLayout()) {
337 // Flex items that were previously stretching need to be relayed out so we 336 // Flex items that were previously stretching need to be relayed out so we
338 // can compute new available cross axis space. This is only necessary for 337 // can compute new available cross axis space. This is only necessary for
339 // stretching since other alignment values don't change the size of the 338 // stretching since other alignment values don't change the size of the
340 // box. 339 // box.
341 for (LayoutBox* child = FirstChildBox(); child; 340 for (LayoutBox* child = FirstChildBox(); child;
342 child = child->NextSiblingBox()) { 341 child = child->NextSiblingBox()) {
343 ItemPosition previous_alignment = 342 ItemPosition previous_alignment =
344 child->StyleRef() 343 child->StyleRef()
345 .ResolvedAlignSelf(SelfAlignmentNormalBehavior(), old_style) 344 .ResolvedAlignSelf(SelfAlignmentNormalBehavior(), old_style)
(...skipping 1345 matching lines...) Expand 10 before | Expand all | Expand 10 after
1691 if (child.Style()->HasStaticBlockPosition( 1690 if (child.Style()->HasStaticBlockPosition(
1692 Style()->IsHorizontalWritingMode())) 1691 Style()->IsHorizontalWritingMode()))
1693 child.SetChildNeedsLayout(kMarkOnlyThis); 1692 child.SetChildNeedsLayout(kMarkOnlyThis);
1694 } 1693 }
1695 } 1694 }
1696 1695
1697 ItemPosition LayoutFlexibleBox::AlignmentForChild( 1696 ItemPosition LayoutFlexibleBox::AlignmentForChild(
1698 const LayoutBox& child) const { 1697 const LayoutBox& child) const {
1699 ItemPosition align = 1698 ItemPosition align =
1700 child.StyleRef() 1699 child.StyleRef()
1701 .ResolvedAlignSelf(SelfAlignmentNormalBehavior(), 1700 .ResolvedAlignSelf(SelfAlignmentNormalBehavior(), Style())
1702 child.IsAnonymous() ? Style() : nullptr)
1703 .GetPosition(); 1701 .GetPosition();
1704 DCHECK_NE(align, kItemPositionAuto); 1702 DCHECK_NE(align, kItemPositionAuto);
1705 DCHECK_NE(align, kItemPositionNormal); 1703 DCHECK_NE(align, kItemPositionNormal);
1706 1704
1707 if (align == kItemPositionBaseline && HasOrthogonalFlow(child)) 1705 if (align == kItemPositionBaseline && HasOrthogonalFlow(child))
1708 align = kItemPositionFlexStart; 1706 align = kItemPositionFlexStart;
1709 1707
1710 if (Style()->FlexWrap() == kFlexWrapReverse) { 1708 if (Style()->FlexWrap() == kFlexWrapReverse) {
1711 if (align == kItemPositionFlexStart) 1709 if (align == kItemPositionFlexStart)
1712 align = kItemPositionFlexEnd; 1710 align = kItemPositionFlexEnd;
(...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after
2178 LayoutUnit original_offset = 2176 LayoutUnit original_offset =
2179 line_contexts[line_number].cross_axis_offset - cross_axis_start_edge; 2177 line_contexts[line_number].cross_axis_offset - cross_axis_start_edge;
2180 LayoutUnit new_offset = 2178 LayoutUnit new_offset =
2181 content_extent - original_offset - line_cross_axis_extent; 2179 content_extent - original_offset - line_cross_axis_extent;
2182 AdjustAlignmentForChild(*flex_item.box, new_offset - original_offset); 2180 AdjustAlignmentForChild(*flex_item.box, new_offset - original_offset);
2183 } 2181 }
2184 } 2182 }
2185 } 2183 }
2186 2184
2187 } // namespace blink 2185 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698