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:
| M | cmd/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}
+ }),
)
}