diff options
author | crupest <crupest@outlook.com> | 2021-03-17 15:04:16 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2021-03-17 15:04:16 +0800 |
commit | af2e38b320905bf3b1e5d0969d0811c47289bbfe (patch) | |
tree | 18a55d5cf3fc5bea4ab342476dc5a57574808839 /src/ui/render/FlexLayoutRenderObject.cpp | |
parent | 7703063a5816b089483e78ccd74bb9902ccfbea8 (diff) | |
download | cru-af2e38b320905bf3b1e5d0969d0811c47289bbfe.tar.gz cru-af2e38b320905bf3b1e5d0969d0811c47289bbfe.tar.bz2 cru-af2e38b320905bf3b1e5d0969d0811c47289bbfe.zip |
...
Diffstat (limited to 'src/ui/render/FlexLayoutRenderObject.cpp')
-rw-r--r-- | src/ui/render/FlexLayoutRenderObject.cpp | 41 |
1 files changed, 11 insertions, 30 deletions
diff --git a/src/ui/render/FlexLayoutRenderObject.cpp b/src/ui/render/FlexLayoutRenderObject.cpp index b1ef69ee..e4b3774f 100644 --- a/src/ui/render/FlexLayoutRenderObject.cpp +++ b/src/ui/render/FlexLayoutRenderObject.cpp @@ -107,25 +107,12 @@ Size FlexLayoutMeasureContentImpl( MeasureLength min_main_length = GetMain(requirement.min, direction_tag); MeasureLength min_cross_length = GetCross(requirement.min, direction_tag); - std::vector<MeasureLength> child_cross_measure_requirement; - child_cross_measure_requirement.reserve(children.size()); - - for (auto child : children) { - child_cross_measure_requirement.push_back( - StackLayoutCalculateChildMaxLength( - preferred_cross_length, max_cross_length, - GetCross(child->GetMinSize(), direction_tag), log_tag, - u"(Measure) Child's min cross size is bigger than parent's max " - u"cross size.")); - } - // step 1. for (Index i = 0; i < child_count; i++) { const auto child = children[i]; child->Measure(MeasureRequirement{CreateTSize<MeasureSize>( MeasureLength::NotSpecified(), - child_cross_measure_requirement[i], - direction_tag), + max_cross_length, direction_tag), MeasureSize::NotSpecified()}, MeasureSize::NotSpecified()); } @@ -213,21 +200,17 @@ Size FlexLayoutMeasureContentImpl( new_measure_length = 0.f; } - child->Measure( - MeasureRequirement{ - CreateTSize<MeasureSize>(new_measure_length, - child_cross_measure_requirement[i], - direction_tag), - MeasureSize::NotSpecified()}, - CreateTSize<MeasureSize>(new_measure_length, - MeasureLength::NotSpecified(), - direction_tag)); + child->Measure(MeasureRequirement{CreateTSize<MeasureSize>( + new_measure_length, + max_cross_length, direction_tag), + MeasureSize::NotSpecified()}, + CreateTSize<MeasureSize>(new_measure_length, + MeasureLength::NotSpecified(), + direction_tag)); const Size new_size = child->GetSize(); const float new_main_length = GetMain(new_size, direction_tag); - if (new_main_length == 0.f || - (child_min_main_length.IsSpecified() && - new_main_length == child_min_main_length.GetLengthOrUndefined())) { + if (new_main_length > new_measure_length) { to_remove.push_back(i); } } @@ -278,8 +261,7 @@ Size FlexLayoutMeasureContentImpl( child->Measure( MeasureRequirement{ CreateTSize<MeasureSize>(MeasureLength::NotSpecified(), - child_cross_measure_requirement[i], - direction_tag), + max_cross_length, direction_tag), CreateTSize<MeasureSize>(new_measure_length, MeasureLength::NotSpecified(), direction_tag)}, @@ -289,8 +271,7 @@ Size FlexLayoutMeasureContentImpl( const Size new_size = child->GetSize(); const float new_main_length = GetMain(new_size, direction_tag); - if (child_max_main_length.IsSpecified() && - new_main_length == child_max_main_length.GetLengthOrUndefined()) { + if (new_main_length < new_measure_length) { to_remove.push_back(i); } } |