kanban

Kanban client in Gio
Log | Files | Refs | README | LICENSE

commit 5a1d55662884f7bfe8b3f8bb47f7ee62f074bcc8
parent 83b69e53d3565e383aace7381823416afcd0bc84
Author: Jack Mordaunt <jackmordaunt@gmail.com>
Date:   Thu,  5 Nov 2020 09:42:26 +0800

ux: constrain max form size

Diffstat:
Mcmd/kanban/layout.go | 123++++++++++++++++++++++++++++++++++++++++---------------------------------------
1 file changed, 63 insertions(+), 60 deletions(-)

diff --git a/cmd/kanban/layout.go b/cmd/kanban/layout.go @@ -10,91 +10,94 @@ import ( ) // Modal renders content centered with decorations. -func Modal(gtx C, th *material.Theme, title string, content layout.Widget) D { - return Centered(gtx, func(gtx C) D { - gtx.Constraints.Max.X = int(float32(gtx.Constraints.Max.X) * 0.8) - return layout.Stack{}.Layout( - gtx, - layout.Expanded(func(gtx C) D { - return Rect{ - Color: color.RGBA{R: 255, G: 255, B: 255, A: 255}, - Size: layout.FPt(gtx.Constraints.Min), - Radii: 4, - }.Layout(gtx) - }), - layout.Stacked(func(gtx C) D { - inset := layout.UniformInset(unit.Dp(10)) - return layout.Flex{ - Axis: layout.Vertical, - }.Layout( +func Modal(gtx C, th *material.Theme, title string, w layout.Widget) D { + return layout.Stack{}.Layout( + gtx, + layout.Stacked(func(gtx C) D { + return Rect{ + Size: layout.FPt(gtx.Constraints.Max), + Color: color.RGBA{A: 200}, + }.Layout(gtx) + }), + layout.Stacked(func(gtx C) D { + return Centered(gtx, func(gtx C) D { + gtx.Constraints.Max.X = int(float32(gtx.Constraints.Max.X) * 0.8) + if gtx.Constraints.Max.X > gtx.Px(unit.Dp(600)) { + gtx.Constraints.Max.X = gtx.Px(unit.Dp(600)) + } + return layout.Stack{}.Layout( gtx, - layout.Rigid(func(gtx C) D { - return layout.Stack{}.Layout( + layout.Expanded(func(gtx C) D { + return Rect{ + Color: color.RGBA{R: 255, G: 255, B: 255, A: 255}, + Size: layout.FPt(gtx.Constraints.Min), + Radii: 4, + }.Layout(gtx) + }), + layout.Stacked(func(gtx C) D { + inset := layout.UniformInset(unit.Dp(10)) + return layout.Flex{ + Axis: layout.Vertical, + }.Layout( gtx, - layout.Expanded(func(gtx C) D { - return Rect{ - Color: color.RGBA{A: 100}, - Size: f32.Point{ - X: float32(gtx.Constraints.Max.X), - Y: float32(gtx.Constraints.Min.Y), - }, - }.Layout(gtx) + layout.Rigid(func(gtx C) D { + return layout.Stack{}.Layout( + gtx, + layout.Expanded(func(gtx C) D { + return Rect{ + Color: color.RGBA{A: 100}, + Size: f32.Point{ + X: float32(gtx.Constraints.Max.X), + Y: float32(gtx.Constraints.Min.Y), + }, + }.Layout(gtx) + }), + layout.Stacked(func(gtx C) D { + return inset.Layout(gtx, func(gtx C) D { + return material.H6(th, title).Layout(gtx) + }) + }), + ) }), - layout.Stacked(func(gtx C) D { + layout.Rigid(func(gtx C) D { return inset.Layout(gtx, func(gtx C) D { - return material.H6(th, title).Layout(gtx) + return w(gtx) }) }), ) }), - layout.Rigid(func(gtx C) D { - return inset.Layout(gtx, func(gtx C) D { - return content(gtx) - }) - }), ) - }), - ) - }) + }) + }), + ) } -func Centered(gtx C, content layout.Widget) D { - return layout.Stack{}.Layout( +func Centered(gtx C, w layout.Widget) D { + return layout.Flex{ + Axis: layout.Horizontal, + }.Layout( gtx, - layout.Stacked(func(gtx C) D { - return Rect{ - Size: layout.FPt(gtx.Constraints.Max), - Color: color.RGBA{A: 200}, - }.Layout(gtx) + layout.Flexed(1, func(gtx C) D { + return D{Size: gtx.Constraints.Min} }), - layout.Stacked(func(gtx C) D { + layout.Rigid(func(gtx C) D { return layout.Flex{ - Axis: layout.Horizontal, + Axis: layout.Vertical, }.Layout( gtx, layout.Flexed(1, func(gtx C) D { return D{Size: gtx.Constraints.Min} }), layout.Rigid(func(gtx C) D { - return layout.Flex{ - Axis: layout.Vertical, - }.Layout( - gtx, - layout.Flexed(1, func(gtx C) D { - return D{Size: gtx.Constraints.Min} - }), - layout.Rigid(func(gtx C) D { - return content(gtx) - }), - layout.Flexed(1, func(gtx C) D { - return D{Size: gtx.Constraints.Min} - }), - ) + return w(gtx) }), layout.Flexed(1, func(gtx C) D { return D{Size: gtx.Constraints.Min} }), ) }), + layout.Flexed(1, func(gtx C) D { + return D{Size: gtx.Constraints.Min} + }), ) }