widget/material: maintain size for empty images If the image source is empty, we should maintain the specified size so that the parent can rely on the Width and Height values they specified. Prior to this patch, the layout would move around when the image was empty one frame and present the next. This produces bad user experience as the layout resizes as images pop in. Such behaviour reliably occured when using an async.Loader to download images. Signed-off-by: Jack Mordaunt <jackmordaunt.dev@gmail.com>
1 files changed, 4 insertions(+), 0 deletions(-) M widget/material/image.go
M widget/material/image.go => widget/material/image.go +4 -0
@@ 7,6 7,7 @@ import ( "gioui.org/layout" "gioui.org/op" "gioui.org/op/clip" "gioui.org/op/paint" "gioui.org/unit" "gioui.org/widget" @@ ) 30,6 31,9 @@ func (img Image) Layout(gtx layout.Context) layout.Dimensions { if img.Height.V > 0 { gtx.Constraints.Max.Y = gtx.Constraints.Constrain(image.Pt(0, gtx.Px(img.Height))).Y } if img.Image.Src == (paint.ImageOp{}) { return D{Size: gtx.Constraints.Max} } defer op.Save(gtx.Ops).Load() macro := op.Record(gtx.Ops) dims := img.Image.Layout(gtx)