Use viewport width for adaptive layout

This commit is contained in:
Joe Julian
2026-04-08 23:49:07 -07:00
parent b256a77d0c
commit 07a071503a
6 changed files with 115 additions and 39 deletions
+9 -9
View File
@@ -13,7 +13,7 @@ import (
)
func (u *ui) header(gtx layout.Context) layout.Dimensions {
if u.mode == "phone" {
if u.usesCompactViewport() {
if u.shouldShowLifecycleSetup() || u.isVaultLocked() {
return layout.Dimensions{}
}
@@ -69,7 +69,7 @@ func (u *ui) headerActions(gtx layout.Context) layout.Dimensions {
metrics.RowDims = row(gtx)
rowCall := rowOps.Stop()
if u.mode == "phone" {
if u.usesCompactViewport() {
metrics.RowOriginX = max(0, gtx.Constraints.Max.X-metrics.RowDims.Size.X)
}
@@ -79,7 +79,7 @@ func (u *ui) headerActions(gtx layout.Context) layout.Dimensions {
rowCall.Add(gtx.Ops)
rowStack.Pop()
if u.mode == "phone" {
if u.usesCompactViewport() {
if u.syncMenuOpen {
u.phoneSyncMenuVisible = true
u.phoneSyncMenuAnchor = metrics.syncAnchor().point()
@@ -155,13 +155,13 @@ func (u *ui) mainMenu(gtx layout.Context) layout.Dimensions {
func (u *ui) syncButtonGroup(gtx layout.Context) layout.Dimensions {
label := "Sync"
spacing := unit.Dp(4)
if u.mode == "phone" {
if u.usesCompactViewport() {
spacing = unit.Dp(3)
}
row := func(gtx layout.Context) layout.Dimensions {
return layout.Flex{Alignment: layout.Middle}.Layout(gtx,
layout.Rigid(func(gtx layout.Context) layout.Dimensions {
return syncPrimaryButton(gtx, u.theme, &u.synchronizeVault, label, u.mode == "phone")
return syncPrimaryButton(gtx, u.theme, &u.synchronizeVault, label, u.usesCompactViewport())
}),
layout.Rigid(layout.Spacer{Width: spacing}.Layout),
layout.Rigid(func(gtx layout.Context) layout.Dimensions {
@@ -183,7 +183,7 @@ func (u *ui) syncMenuToggle(gtx layout.Context) layout.Dimensions {
}
btn.Size = unit.Dp(18)
btn.Inset = layout.UniformInset(unit.Dp(8))
if u.mode == "phone" {
if u.usesCompactViewport() {
btn.Size = unit.Dp(16)
btn.Inset = layout.UniformInset(unit.Dp(7))
}
@@ -460,7 +460,7 @@ func (u *ui) mainMenuButtonGroup(gtx layout.Context) layout.Dimensions {
}
func (u *ui) phoneHeaderMenus(gtx layout.Context) layout.Dimensions {
if u.mode != "phone" {
if !u.usesCompactViewport() {
return layout.Dimensions{}
}
if !u.syncMenuVisibleOnPhone() && !u.mainMenuVisibleOnPhone() {
@@ -484,11 +484,11 @@ func (u *ui) phoneHeaderMenus(gtx layout.Context) layout.Dimensions {
}
func (u *ui) syncMenuVisibleOnPhone() bool {
return u.mode == "phone" && u.phoneSyncMenuVisible && u.syncMenuOpen
return u.usesCompactViewport() && u.phoneSyncMenuVisible && u.syncMenuOpen
}
func (u *ui) mainMenuVisibleOnPhone() bool {
return u.mode == "phone" && u.phoneMainMenuVisible && u.mainMenuOpen
return u.usesCompactViewport() && u.phoneMainMenuVisible && u.mainMenuOpen
}
func (u *ui) syncMenuDropsBelowTrigger() bool {