aboutsummaryrefslogtreecommitdiff
path: root/src/ui/render/ScrollRenderObject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/render/ScrollRenderObject.cpp')
-rw-r--r--src/ui/render/ScrollRenderObject.cpp31
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