diff --git a/widget/enum.go b/widget/enum.go index f2d1199e..9afe87c7 100644 --- a/widget/enum.go +++ b/widget/enum.go @@ -1,8 +1,12 @@ package widget import ( + "image" + "gioui.org/gesture" + "gioui.org/io/pointer" "gioui.org/layout" + "gioui.org/op" ) type Enum struct { @@ -32,7 +36,12 @@ func (e *Enum) Changed() bool { } // Layout adds the event handler for key. -func (e *Enum) Layout(gtx layout.Context, key string) { +func (e *Enum) Layout(gtx layout.Context, key string) layout.Dimensions { + var st op.StackOp + st.Push(gtx.Ops) + defer st.Pop() + pointer.Rect(image.Rectangle{Max: gtx.Constraints.Min}).Add(gtx.Ops) + if index(e.values, key) == -1 { e.values = append(e.values, key) e.clicks = append(e.clicks, gesture.Click{}) @@ -48,4 +57,6 @@ func (e *Enum) Layout(gtx layout.Context, key string) { } clk.Add(gtx.Ops) } + + return layout.Dimensions{Size: gtx.Constraints.Min} } diff --git a/widget/material/radiobutton.go b/widget/material/radiobutton.go index 4b14b06e..c356ed77 100644 --- a/widget/material/radiobutton.go +++ b/widget/material/radiobutton.go @@ -37,6 +37,7 @@ func RadioButton(th *Theme, group *widget.Enum, key, label string) RadioButtonSt // Layout updates enum and displays the radio button. func (r RadioButtonStyle) Layout(gtx layout.Context) layout.Dimensions { dims := r.layout(gtx, r.Group.Value == r.Key) + gtx.Constraints.Min = dims.Size r.Group.Layout(gtx, r.Key) return dims }