From 4e20ea83a137b25f300ef369594bde19ff5a9ebc Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Mon, 11 May 2020 12:23:18 +0200 Subject: [PATCH] widget/material: use cosntraints for setting pointer hit areas Signed-off-by: Elias Naur --- layout/layout.go | 5 +++++ widget/material/button.go | 8 ++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/layout/layout.go b/layout/layout.go index d934221d..d1ab7ac9 100644 --- a/layout/layout.go +++ b/layout/layout.go @@ -81,6 +81,11 @@ func (c Constraints) Constrain(size image.Point) image.Point { return image.Point{X: c.Width.Constrain(size.X), Y: c.Height.Constrain(size.Y)} } +// Min returns the smallest dimensions that satisfy the constraints. +func (c Constraints) Min() image.Point { + return image.Point{X: c.Width.Min, Y: c.Height.Min} +} + // RigidConstraints returns the constraints that can only be // satisfied by the given dimensions. func RigidConstraints(size image.Point) Constraints { diff --git a/widget/material/button.go b/widget/material/button.go index 03878d90..25c2c594 100644 --- a/widget/material/button.go +++ b/widget/material/button.go @@ -114,7 +114,9 @@ func (b ButtonLayoutStyle) Layout(gtx *layout.Context, button *widget.Button, w w() }) }) - pointer.Rect(image.Rectangle{Max: gtx.Dimensions.Size}).Add(gtx.Ops) + }), + layout.Expanded(func() { + pointer.Rect(image.Rectangle{Max: gtx.Constraints.Min()}).Add(gtx.Ops) button.Layout(gtx) }), ) @@ -146,7 +148,9 @@ func (b IconButtonStyle) Layout(gtx *layout.Context, button *widget.Button) { Size: image.Point{X: size, Y: size}, } }) - pointer.Ellipse(image.Rectangle{Max: gtx.Dimensions.Size}).Add(gtx.Ops) + }), + layout.Expanded(func() { + pointer.Ellipse(image.Rectangle{Max: gtx.Constraints.Min()}).Add(gtx.Ops) button.Layout(gtx) }), )