Rebalance desktop open-vault layout

This commit is contained in:
Joe Julian
2026-03-29 17:36:41 -07:00
parent 3066442c1b
commit c0747b62a0
+61 -11
View File
@@ -1074,6 +1074,10 @@ func (u *ui) shouldUseLockedSinglePane() bool {
return u.isVaultLocked() && !u.shouldShowLifecycleSetup() return u.isVaultLocked() && !u.shouldShowLifecycleSetup()
} }
func (u *ui) shouldShowDesktopWorkingHeader() bool {
return u.mode == "desktop" && !u.shouldShowLifecycleSetup() && !u.isVaultLocked()
}
func (u *ui) chooseExistingFileAction(target *widget.Editor) error { func (u *ui) chooseExistingFileAction(target *widget.Editor) error {
path, err := pickExistingFile() path, err := pickExistingFile()
if err != nil { if err != nil {
@@ -1421,6 +1425,9 @@ func (u *ui) header(gtx layout.Context) layout.Dimensions {
) )
}) })
} }
if u.shouldShowDesktopWorkingHeader() {
return layout.Dimensions{}
}
return card(gtx, func(gtx layout.Context) layout.Dimensions { return card(gtx, func(gtx layout.Context) layout.Dimensions {
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 {
@@ -1454,6 +1461,9 @@ func (u *ui) headerActions(gtx layout.Context) layout.Dimensions {
if u.isVaultLocked() { if u.isVaultLocked() {
return layout.Dimensions{} return layout.Dimensions{}
} }
if u.shouldShowDesktopWorkingHeader() {
return layout.Dimensions{}
}
return layout.Flex{Spacing: layout.SpaceStart}.Layout(gtx, return layout.Flex{Spacing: layout.SpaceStart}.Layout(gtx,
layout.Rigid(func(gtx layout.Context) layout.Dimensions { layout.Rigid(func(gtx layout.Context) layout.Dimensions {
btn := material.Button(u.theme, &u.synchronizeVault, "Synchronize") btn := material.Button(u.theme, &u.synchronizeVault, "Synchronize")
@@ -1708,8 +1718,40 @@ func (u *ui) detailPanel(gtx layout.Context) layout.Dimensions {
panel = compactCard panel = compactCard
} }
return panel(gtx, func(gtx layout.Context) layout.Dimensions { return panel(gtx, func(gtx layout.Context) layout.Dimensions {
if u.isVaultLocked() { if u.shouldShowDesktopWorkingHeader() {
return layout.Flex{Axis: layout.Vertical}.Layout(gtx, return layout.Flex{Axis: layout.Vertical}.Layout(gtx,
layout.Rigid(func(gtx layout.Context) layout.Dimensions {
return layout.Flex{Alignment: layout.Middle, Spacing: layout.SpaceStart}.Layout(gtx,
layout.Flexed(1, func(gtx layout.Context) layout.Dimensions {
return layout.Dimensions{}
}),
layout.Rigid(func(gtx layout.Context) layout.Dimensions {
btn := material.Button(u.theme, &u.synchronizeVault, "Synchronize")
return btn.Layout(gtx)
}),
layout.Rigid(layout.Spacer{Width: unit.Dp(8)}.Layout),
layout.Rigid(func(gtx layout.Context) layout.Dimensions {
btn := material.Button(u.theme, &u.lockVault, "Lock")
return btn.Layout(gtx)
}),
)
}),
layout.Rigid(layout.Spacer{Height: unit.Dp(12)}.Layout),
layout.Flexed(1, func(gtx layout.Context) layout.Dimensions {
return u.detailPanelContent(gtx)
}),
)
}
return u.detailPanelContent(gtx)
})
}
func (u *ui) detailPanelContent(gtx layout.Context) layout.Dimensions {
panel := layout.Flex{Axis: layout.Vertical}
_ = panel
return layout.Flex{Axis: layout.Vertical}.Layout(gtx, func() []layout.FlexChild {
if u.isVaultLocked() {
return []layout.FlexChild{
layout.Rigid(func(gtx layout.Context) layout.Dimensions { layout.Rigid(func(gtx layout.Context) layout.Dimensions {
lbl := material.Label(u.theme, unit.Sp(18), "Unlock Vault") lbl := material.Label(u.theme, unit.Sp(18), "Unlock Vault")
lbl.Color = accentColor lbl.Color = accentColor
@@ -1723,11 +1765,11 @@ func (u *ui) detailPanel(gtx layout.Context) layout.Dimensions {
}), }),
layout.Rigid(layout.Spacer{Height: unit.Dp(12)}.Layout), layout.Rigid(layout.Spacer{Height: unit.Dp(12)}.Layout),
layout.Rigid(u.unlockPanel), layout.Rigid(u.unlockPanel),
) }
} }
item, ok := u.selectedEntry() item, ok := u.selectedEntry()
if !ok && !u.editingEntry { if !ok && !u.editingEntry {
return layout.Flex{Axis: layout.Vertical}.Layout(gtx, return []layout.FlexChild{
layout.Rigid(func(gtx layout.Context) layout.Dimensions { layout.Rigid(func(gtx layout.Context) layout.Dimensions {
lbl := material.Label(u.theme, unit.Sp(18), "Entry details") lbl := material.Label(u.theme, unit.Sp(18), "Entry details")
lbl.Color = accentColor lbl.Color = accentColor
@@ -1739,7 +1781,7 @@ func (u *ui) detailPanel(gtx layout.Context) layout.Dimensions {
lbl.Color = mutedColor lbl.Color = mutedColor
return lbl.Layout(gtx) return lbl.Layout(gtx)
}), }),
) }
} }
if u.editingEntry { if u.editingEntry {
rows := []layout.Widget{ rows := []layout.Widget{
@@ -1755,9 +1797,13 @@ func (u *ui) detailPanel(gtx layout.Context) layout.Dimensions {
layout.Spacer{Height: unit.Dp(8)}.Layout, layout.Spacer{Height: unit.Dp(8)}.Layout,
u.entryEditorPanel, u.entryEditorPanel,
} }
return material.List(u.theme, &u.detailList).Layout(gtx, len(rows), func(gtx layout.Context, i int) layout.Dimensions { return []layout.FlexChild{
return rows[i](gtx) layout.Flexed(1, func(gtx layout.Context) layout.Dimensions {
}) return material.List(u.theme, &u.detailList).Layout(gtx, len(rows), func(gtx layout.Context, i int) layout.Dimensions {
return rows[i](gtx)
})
}),
}
} }
password := u.detailPasswordValue() password := u.detailPasswordValue()
titleSize := unit.Sp(26) titleSize := unit.Sp(26)
@@ -1862,10 +1908,14 @@ func (u *ui) detailPanel(gtx layout.Context) layout.Dimensions {
} }
}, },
} }
return material.List(u.theme, &u.detailList).Layout(gtx, len(rows), func(gtx layout.Context, i int) layout.Dimensions { return []layout.FlexChild{
return rows[i](gtx) layout.Flexed(1, func(gtx layout.Context) layout.Dimensions {
}) return material.List(u.theme, &u.detailList).Layout(gtx, len(rows), func(gtx layout.Context, i int) layout.Dimensions {
}) return rows[i](gtx)
})
}),
}
}()...)
} }
func (u *ui) banner(gtx layout.Context) layout.Dimensions { func (u *ui) banner(gtx layout.Context) layout.Dimensions {