diff options
| author | Yuqian Yang <crupest@crupest.life> | 2025-11-22 21:24:18 +0800 |
|---|---|---|
| committer | Yuqian Yang <crupest@crupest.life> | 2025-11-22 21:24:18 +0800 |
| commit | 8f8b7dfd056dfa23dd1989d3f3dfd3d5d91d0168 (patch) | |
| tree | 435917530667bd4532c9bb70826c5796ca1ffa6a /src/ui/render/ScrollRenderObject.cpp | |
| parent | 7ce185d5a3fcfad8c8f746f95f3d50a8829faac4 (diff) | |
| download | cru-8f8b7dfd056dfa23dd1989d3f3dfd3d5d91d0168.tar.gz cru-8f8b7dfd056dfa23dd1989d3f3dfd3d5d91d0168.tar.bz2 cru-8f8b7dfd056dfa23dd1989d3f3dfd3d5d91d0168.zip | |
Clean measure requirement codes.
Diffstat (limited to 'src/ui/render/ScrollRenderObject.cpp')
| -rw-r--r-- | src/ui/render/ScrollRenderObject.cpp | 31 |
1 files changed, 10 insertions, 21 deletions
diff --git a/src/ui/render/ScrollRenderObject.cpp b/src/ui/render/ScrollRenderObject.cpp index d3e00db1..4d359a86 100644 --- a/src/ui/render/ScrollRenderObject.cpp +++ b/src/ui/render/ScrollRenderObject.cpp @@ -163,29 +163,18 @@ void ScrollRenderObject::SetMouseWheelScrollEnabled(bool enable) { } } -Size ScrollRenderObject::OnMeasureContent(const MeasureRequirement& requirement, - const MeasureSize& preferred_size) { +Size ScrollRenderObject::OnMeasureContent( + const MeasureRequirement& requirement) { if (auto child = GetChild()) { - child->Measure(MeasureRequirement{MeasureSize::NotSpecified(), - MeasureSize::NotSpecified()}, - MeasureSize::NotSpecified()); + child->Measure({MeasureSize::NotSpecified(), MeasureSize::NotSpecified(), + MeasureSize::NotSpecified()}); + + auto result = + requirement.ExpandToSuggestAndCoerce(child->GetMeasureResultSize()); - Size result = requirement.Coerce(child->GetDesiredSize()); - if (preferred_size.width.IsSpecified()) { - result.width = preferred_size.width.GetLengthOrUndefined(); - } - if (preferred_size.height.IsSpecified()) { - result.height = preferred_size.height.GetLengthOrUndefined(); - } return result; } else { - Size result{preferred_size.width.IsSpecified() - ? preferred_size.width.GetLengthOrUndefined() - : requirement.min.width.GetLengthOr0(), - preferred_size.height.IsSpecified() - ? preferred_size.height.GetLengthOrUndefined() - : requirement.min.height.GetLengthOr0()}; - return result; + return requirement.suggest.GetSizeOr0(); } } @@ -247,7 +236,7 @@ bool ScrollRenderObject::HorizontalCanScrollDown() { auto child = GetChild(); if (child == nullptr) return false; return GetScrollOffset().x < - child->GetDesiredSize().width - GetViewRect().width; + child->GetMeasureResultSize().width - GetViewRect().width; } bool ScrollRenderObject::VerticalCanScrollUp() { @@ -258,6 +247,6 @@ bool ScrollRenderObject::VerticalCanScrollDown() { auto child = GetChild(); if (child == nullptr) return false; return GetScrollOffset().y < - child->GetDesiredSize().height - GetViewRect().height; + child->GetMeasureResultSize().height - GetViewRect().height; } } // namespace cru::ui::render |
