widget/material: fix List anchoring with zero minimum constraints

This comment and associated code were designed to guard against
the scrollbar failing to anchor to the proper edge of the content
when the layout.Direction was used with a zero minimum constraint.

However, they were in the wrong place to actually achieve the
desired behavior. This change simply moves the constraints
change to before the invocation of layout.Direction's Layout
method. This fixes the scrollbar appearing on the wrong edge of
content when the content is laid out with a zero minimum constraint.

Signed-off-by: Chris Waldon <christopher.waldon.dev@gmail.com>
This commit is contained in:
Chris Waldon
2021-11-02 17:15:12 -04:00
committed by Elias Naur
parent ef36ce3953
commit c5831de955
+4 -4
View File
@@ -272,11 +272,11 @@ func (l ListStyle) Layout(gtx layout.Context, length int, w layout.ListElement)
}
majorAxisSize := l.state.Axis.Convert(listDims.Size).X
start, end := fromListPosition(l.state.Position, length, majorAxisSize)
// layout.Direction respects the minimum, so ensure that the
// scrollbar will be drawn on the correct edge even if the provided
// layout.Context had a zero minimum constraint.
gtx.Constraints.Min = gtx.Constraints.Max
anchoring.Layout(gtx, func(gtx layout.Context) layout.Dimensions {
// layout.Dimension respects the minimum, so ensure that the
// scrollbar will be drawn on the correct edge even if the provided
// layout.Context had a zero minimum constraint.
gtx.Constraints.Min = gtx.Constraints.Max
return l.ScrollbarStyle.Layout(gtx, l.state.Axis, start, end)
})