Fix Android group browser scrolling
ci / lint-test (push) Successful in 1m16s
ci / build (push) Successful in 2m37s

This commit is contained in:
Joe Julian
2026-04-06 00:04:38 -07:00
parent 1c72a5009f
commit 0c6d707325
2 changed files with 46 additions and 25 deletions
+6 -16
View File
@@ -5624,21 +5624,11 @@ func (u *ui) groupBar(gtx layout.Context) layout.Dimensions {
if atRoot { if atRoot {
u.phoneGroupBrowserExpanded = true u.phoneGroupBrowserExpanded = true
} }
return layout.Flex{Axis: layout.Vertical}.Layout(gtx, children := make([]layout.FlexChild, 0, len(groups))
layout.Rigid(func(gtx layout.Context) layout.Dimensions { for i := range groups {
if len(groups) == 0 {
return layout.Dimensions{}
}
maxY := gtx.Dp(unit.Dp(168))
if gtx.Constraints.Max.Y > maxY {
gtx.Constraints.Max.Y = maxY
}
if gtx.Constraints.Min.Y > gtx.Constraints.Max.Y {
gtx.Constraints.Min.Y = gtx.Constraints.Max.Y
}
return material.List(u.theme, &u.groupList).Layout(gtx, len(groups), func(gtx layout.Context, i int) layout.Dimensions {
idx := i idx := i
name := groups[i] name := groups[i]
children = append(children, layout.Rigid(func(gtx layout.Context) layout.Dimensions {
return layout.Inset{Bottom: unit.Dp(6)}.Layout(gtx, func(gtx layout.Context) layout.Dimensions { return layout.Inset{Bottom: unit.Dp(6)}.Layout(gtx, func(gtx layout.Context) layout.Dimensions {
for u.groupClicks[idx].Clicked(gtx) { for u.groupClicks[idx].Clicked(gtx) {
u.state.EnterGroup(name) u.state.EnterGroup(name)
@@ -5647,9 +5637,9 @@ func (u *ui) groupBar(gtx layout.Context) layout.Dimensions {
} }
return tonedButton(gtx, u.theme, &u.groupClicks[idx], name) return tonedButton(gtx, u.theme, &u.groupClicks[idx], name)
}) })
}) }))
}), }
) return layout.Flex{Axis: layout.Vertical}.Layout(gtx, children...)
} }
return layout.Flex{Axis: layout.Vertical}.Layout(gtx, return layout.Flex{Axis: layout.Vertical}.Layout(gtx,
layout.Rigid(func(gtx layout.Context) layout.Dimensions { layout.Rigid(func(gtx layout.Context) layout.Dimensions {
+31
View File
@@ -775,6 +775,37 @@ func TestUIPhoneGroupBrowserToggleDoesNotChangeCurrentGroupToolsState(t *testing
} }
} }
func TestUIPhoneGroupBarDoesNotClampScrollableContentHeight(t *testing.T) {
t.Parallel()
u := newUIWithModel("phone", vault.Model{
Groups: [][]string{
{"Crew"},
{"Crew", "One"},
{"Crew", "Two"},
{"Crew", "Three"},
{"Crew", "Four"},
{"Crew", "Five"},
{"Crew", "Six"},
{"Crew", "Seven"},
{"Crew", "Eight"},
},
})
u.setCurrentPath([]string{"Crew"})
ops := new(op.Ops)
gtx := layout.Context{
Ops: ops,
Constraints: layout.Exact(image.Pt(1080, 2400)),
}
dims := u.groupBar(gtx)
minOldCap := gtx.Dp(unit.Dp(220))
if dims.Size.Y <= minOldCap {
t.Fatalf("groupBar() phone height = %d, want > %d to avoid nested-scroll clamp", dims.Size.Y, minOldCap)
}
}
func TestUIPhoneStartsWithGroupToolsCollapsed(t *testing.T) { func TestUIPhoneStartsWithGroupToolsCollapsed(t *testing.T) {
t.Parallel() t.Parallel()