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()
}
func (u *ui) shouldShowDesktopWorkingHeader() bool {
return u.mode == "desktop" && !u.shouldShowLifecycleSetup() && !u.isVaultLocked()
}
func (u *ui) chooseExistingFileAction(target *widget.Editor) error {
path, err := pickExistingFile()
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 layout.Flex{Axis: layout.Vertical}.Layout(gtx,
layout.Rigid(func(gtx layout.Context) layout.Dimensions {
@@ -1454,6 +1461,9 @@ func (u *ui) headerActions(gtx layout.Context) layout.Dimensions {
if u.isVaultLocked() {
return layout.Dimensions{}
}
if u.shouldShowDesktopWorkingHeader() {
return layout.Dimensions{}
}
return layout.Flex{Spacing: layout.SpaceStart}.Layout(gtx,
layout.Rigid(func(gtx layout.Context) layout.Dimensions {
btn := material.Button(u.theme, &u.synchronizeVault, "Synchronize")
@@ -1708,8 +1718,40 @@ func (u *ui) detailPanel(gtx layout.Context) layout.Dimensions {
panel = compactCard
}
return panel(gtx, func(gtx layout.Context) layout.Dimensions {
if u.isVaultLocked() {
if u.shouldShowDesktopWorkingHeader() {
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 {
lbl := material.Label(u.theme, unit.Sp(18), "Unlock Vault")
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(u.unlockPanel),
)
}
}
item, ok := u.selectedEntry()
if !ok && !u.editingEntry {
return layout.Flex{Axis: layout.Vertical}.Layout(gtx,
return []layout.FlexChild{
layout.Rigid(func(gtx layout.Context) layout.Dimensions {
lbl := material.Label(u.theme, unit.Sp(18), "Entry details")
lbl.Color = accentColor
@@ -1739,7 +1781,7 @@ func (u *ui) detailPanel(gtx layout.Context) layout.Dimensions {
lbl.Color = mutedColor
return lbl.Layout(gtx)
}),
)
}
}
if u.editingEntry {
rows := []layout.Widget{
@@ -1755,9 +1797,13 @@ func (u *ui) detailPanel(gtx layout.Context) layout.Dimensions {
layout.Spacer{Height: unit.Dp(8)}.Layout,
u.entryEditorPanel,
}
return material.List(u.theme, &u.detailList).Layout(gtx, len(rows), func(gtx layout.Context, i int) layout.Dimensions {
return rows[i](gtx)
})
return []layout.FlexChild{
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()
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 rows[i](gtx)
})
})
return []layout.FlexChild{
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 {