From f64159a3f2096c0b188eafe69edfeeeba4588366 Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Tue, 22 Dec 2015 19:53:31 -0800 Subject: [PATCH] Respect AT_MOST when measuring ScrollViews. --- ext/native/ui/viewgroup.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/ext/native/ui/viewgroup.cpp b/ext/native/ui/viewgroup.cpp index 35987f8739..74bb799e4c 100644 --- a/ext/native/ui/viewgroup.cpp +++ b/ext/native/ui/viewgroup.cpp @@ -604,8 +604,17 @@ void ScrollView::Measure(const UIContext &dc, MeasureSpec horiz, MeasureSpec ver views_[0]->Measure(dc, MeasureSpec(AT_MOST, measuredWidth_ - (margins.left + margins.right)), MeasureSpec(UNSPECIFIED)); MeasureBySpec(layoutParams_->width, views_[0]->GetMeasuredWidth(), horiz, &measuredWidth_); } - if (orientation_ == ORIENT_VERTICAL && vert.type != EXACTLY && measuredHeight_ < views_[0]->GetBounds().h) - measuredHeight_ = views_[0]->GetBounds().h; + if (orientation_ == ORIENT_VERTICAL && vert.type != EXACTLY) { + if (measuredHeight_ < views_[0]->GetMeasuredHeight()) { + measuredHeight_ = views_[0]->GetMeasuredHeight(); + } + if (measuredHeight_ < views_[0]->GetBounds().h) { + measuredHeight_ = views_[0]->GetBounds().h; + } + if (vert.type == AT_MOST && measuredHeight_ > vert.size) { + measuredHeight_ = vert.size; + } + } } }