forked from joejulian/gio
widget/material: propagate ButtonLayout minimum constraints to content
The previous change fixed a regression where minimum constraints larger than 0 would not affect the button. This change moves the minimum constraints one level lower so the content widget will see them as well. The wrapping layout.Center ensures that any misbehaving widgets still end up centered. Add a test to lock in the new behaviour and the previous fix. Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user