Right-align compact header menus

This commit is contained in:
Joe Julian
2026-04-10 19:23:13 -07:00
parent 54f13d352c
commit 56a0711860
3 changed files with 22 additions and 8 deletions
+2 -2
View File
@@ -489,10 +489,10 @@ type ui struct {
deleteGroupPath []string
apiPolicyGroupScope bool
apiTokenSecret string
phoneSyncMenuAnchor image.Point
phoneMainMenuAnchor image.Point
phoneSyncMenuOrigin image.Point
phoneMainMenuOrigin image.Point
phoneSyncMenuSize image.Point
phoneMainMenuSize image.Point
phoneSyncMenuCall op.CallOp
phoneMainMenuCall op.CallOp
phoneSyncMenuVisible bool
+2
View File
@@ -593,6 +593,8 @@ func (u *ui) layout(gtx layout.Context) layout.Dimensions {
u.phoneMainMenuVisible = false
u.phoneSyncMenuOrigin = image.Point{}
u.phoneMainMenuOrigin = image.Point{}
u.phoneSyncMenuSize = image.Point{}
u.phoneMainMenuSize = image.Point{}
u.phoneSyncMenuCall = op.CallOp{}
u.phoneMainMenuCall = op.CallOp{}
u.syncHostedAPI()
+18 -6
View File
@@ -55,19 +55,19 @@ func (u *ui) headerActions(gtx layout.Context) layout.Dimensions {
}
if u.syncMenuOpen {
u.phoneSyncMenuVisible = true
u.phoneSyncMenuAnchor = cluster.Metrics.SyncAnchor().Point()
u.maybeLogHeaderMenuToggle("sync-visible", true)
placement, menuCall := compactSurface.Place(gtx, cluster.Metrics.SyncAnchor(), u.syncMenu)
u.phoneSyncMenuOrigin = placement.Origin
u.phoneSyncMenuSize = placement.Size
u.phoneSyncMenuCall = menuCall
u.maybeLogHeaderMenuPlacement("sync-phone", compactSurface, placement)
}
if u.mainMenuOpen {
u.phoneMainMenuVisible = true
u.phoneMainMenuAnchor = cluster.Metrics.MainAnchor().Point()
u.maybeLogHeaderMenuToggle("main-visible", true)
placement, menuCall := compactSurface.Place(gtx, cluster.Metrics.MainAnchor(), u.mainMenu)
u.phoneMainMenuOrigin = placement.Origin
u.phoneMainMenuSize = placement.Size
u.phoneMainMenuCall = menuCall
u.maybeLogHeaderMenuPlacement("main-phone", compactSurface, placement)
}
@@ -204,13 +204,25 @@ func (u *ui) phoneHeaderMenus(gtx layout.Context) layout.Dimensions {
}
if u.syncMenuVisibleOnPhone() {
stack := op.Offset(u.phoneSyncMenuOrigin).Push(gtx.Ops)
u.phoneSyncMenuCall.Add(gtx.Ops)
stack := op.Offset(image.Pt(u.frameInsetPx, u.phoneSyncMenuOrigin.Y)).Push(gtx.Ops)
menuGTX := gtx
menuGTX.Constraints.Min = image.Point{}
menuGTX.Constraints.Max.X = max(0, gtx.Constraints.Max.X-(u.frameInsetPx*2))
layout.E.Layout(menuGTX, func(gtx layout.Context) layout.Dimensions {
u.phoneSyncMenuCall.Add(gtx.Ops)
return layout.Dimensions{Size: u.phoneSyncMenuSize}
})
stack.Pop()
}
if u.mainMenuVisibleOnPhone() {
stack := op.Offset(u.phoneMainMenuOrigin).Push(gtx.Ops)
u.phoneMainMenuCall.Add(gtx.Ops)
stack := op.Offset(image.Pt(u.frameInsetPx, u.phoneMainMenuOrigin.Y)).Push(gtx.Ops)
menuGTX := gtx
menuGTX.Constraints.Min = image.Point{}
menuGTX.Constraints.Max.X = max(0, gtx.Constraints.Max.X-(u.frameInsetPx*2))
layout.E.Layout(menuGTX, func(gtx layout.Context) layout.Dimensions {
u.phoneMainMenuCall.Add(gtx.Ops)
return layout.Dimensions{Size: u.phoneMainMenuSize}
})
stack.Pop()
}
return layout.Dimensions{Size: gtx.Constraints.Max}