diff --git a/widget/material/button.go b/widget/material/button.go index 09053c72..28c4bc43 100644 --- a/widget/material/button.go +++ b/widget/material/button.go @@ -109,9 +109,9 @@ func (b ButtonLayout) Layout(gtx *layout.Context, button *widget.Button, w layou } }), layout.Stacked(func() { - gtx.Constraints.Width.Min = hmin - gtx.Constraints.Height.Min = vmin layout.Center.Layout(gtx, func() { + gtx.Constraints.Width.Min = hmin + gtx.Constraints.Height.Min = vmin b.Inset.Layout(gtx, func() { paint.ColorOp{Color: b.Color}.Add(gtx.Ops) w() diff --git a/widget/material/material_test.go b/widget/material/material_test.go new file mode 100644 index 00000000..cd084326 --- /dev/null +++ b/widget/material/material_test.go @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: Unlicense OR MIT + +package material + +import ( + "image" + "testing" + + "gioui.org/layout" + "gioui.org/widget" +) + +func TestButtonLayout(t *testing.T) { + var gtx layout.Context + gtx.Reset(nil, image.Point{X: 100, Y: 100}) + + ButtonLayout{}.Layout(>x, new(widget.Button), func() { + if got, exp := gtx.Constraints.Width.Min, 100; got != exp { + t.Errorf("minimum width is %d, expected %d", got, exp) + } + if got, exp := gtx.Constraints.Height.Min, 100; got != exp { + t.Errorf("minimum width is %d, expected %d", got, exp) + } + }) +}