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

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: Patch for landing. 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 1353 matching lines...) Expand 10 before | Expand all | Expand 10 after
1699 if (child.Style()->HasStaticBlockPosition( 1698 if (child.Style()->HasStaticBlockPosition(
1700 Style()->IsHorizontalWritingMode())) 1699 Style()->IsHorizontalWritingMode()))
1701 child.SetChildNeedsLayout(kMarkOnlyThis); 1700 child.SetChildNeedsLayout(kMarkOnlyThis);
1702 } 1701 }
1703 } 1702 }
1704 1703
1705 ItemPosition LayoutFlexibleBox::AlignmentForChild( 1704 ItemPosition LayoutFlexibleBox::AlignmentForChild(
1706 const LayoutBox& child) const { 1705 const LayoutBox& child) const {
1707 ItemPosition align = 1706 ItemPosition align =
1708 child.StyleRef() 1707 child.StyleRef()
1709 .ResolvedAlignSelf(SelfAlignmentNormalBehavior(), 1708 .ResolvedAlignSelf(SelfAlignmentNormalBehavior(), Style())
1710 child.IsAnonymous() ? Style() : nullptr)
1711 .GetPosition(); 1709 .GetPosition();
1712 DCHECK_NE(align, kItemPositionAuto); 1710 DCHECK_NE(align, kItemPositionAuto);
1713 DCHECK_NE(align, kItemPositionNormal); 1711 DCHECK_NE(align, kItemPositionNormal);
1714 1712
1715 if (align == kItemPositionBaseline && HasOrthogonalFlow(child)) 1713 if (align == kItemPositionBaseline && HasOrthogonalFlow(child))
1716 align = kItemPositionFlexStart; 1714 align = kItemPositionFlexStart;
1717 1715
1718 if (Style()->FlexWrap() == kFlexWrapReverse) { 1716 if (Style()->FlexWrap() == kFlexWrapReverse) {
1719 if (align == kItemPositionFlexStart) 1717 if (align == kItemPositionFlexStart)
1720 align = kItemPositionFlexEnd; 1718 align = kItemPositionFlexEnd;
(...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after
2186 LayoutUnit original_offset = 2184 LayoutUnit original_offset =
2187 line_contexts[line_number].cross_axis_offset - cross_axis_start_edge; 2185 line_contexts[line_number].cross_axis_offset - cross_axis_start_edge;
2188 LayoutUnit new_offset = 2186 LayoutUnit new_offset =
2189 content_extent - original_offset - line_cross_axis_extent; 2187 content_extent - original_offset - line_cross_axis_extent;
2190 AdjustAlignmentForChild(*flex_item.box, new_offset - original_offset); 2188 AdjustAlignmentForChild(*flex_item.box, new_offset - original_offset);
2191 } 2189 }
2192 } 2190 }
2193 } 2191 }
2194 2192
2195 } // namespace blink 2193 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/LayoutBox.cpp ('k') | third_party/WebKit/Source/core/layout/LayoutGrid.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698