Fix KeePassGO open screen field and banner UX

This commit is contained in:
Joe Julian
2026-03-29 15:35:32 -07:00
parent fc9580403d
commit 761fae9b9b
3 changed files with 24 additions and 7 deletions
+13
View File
@@ -674,9 +674,22 @@ func (u *ui) runAction(label string, action func() error) {
}
u.loadingMessage = ""
u.state.ErrorMessage = ""
if suppressStatusMessage(label) {
u.state.StatusMessage = ""
return
}
u.state.StatusMessage = label + " complete"
}
func suppressStatusMessage(label string) bool {
switch strings.TrimSpace(label) {
case "open vault", "open remote vault":
return true
default:
return false
}
}
func actionLoadingLabel(label string) string {
label = strings.TrimSpace(label)
if label == "" {
+6 -6
View File
@@ -1783,8 +1783,8 @@ func TestEnterOnLocalLifecycleScreenDefaultsToOpenVault(t *testing.T) {
if !handled {
t.Fatal("handleKeyPress(Return) = false, want true")
}
if got := u.state.StatusMessage; got != "open vault complete" {
t.Fatalf("StatusMessage = %q, want %q", got, "open vault complete")
if got := u.state.StatusMessage; got != "" {
t.Fatalf("StatusMessage = %q, want empty after open", got)
}
}
@@ -1815,8 +1815,8 @@ func TestEnterOnRemoteLifecycleScreenDefaultsToOpenRemoteVault(t *testing.T) {
if !handled {
t.Fatal("handleKeyPress(Return) = false, want true")
}
if got := u.state.StatusMessage; got != "open remote vault complete" {
t.Fatalf("StatusMessage = %q, want %q", got, "open remote vault complete")
if got := u.state.StatusMessage; got != "" {
t.Fatalf("StatusMessage = %q, want empty after remote open", got)
}
}
@@ -2072,8 +2072,8 @@ func TestUILocalLifecycleActionsUpdateVisibleStatusMessages(t *testing.T) {
reopened.masterPassword.SetText("correct horse battery staple")
reopened.vaultPath.SetText(path)
reopened.runAction("open vault", reopened.openVaultAction)
if got := reopened.state.StatusMessage; got != "open vault complete" {
t.Fatalf("status after open = %q, want %q", got, "open vault complete")
if got := reopened.state.StatusMessage; got != "" {
t.Fatalf("status after open = %q, want empty", got)
}
if got := reopened.state.ErrorMessage; got != "" {
t.Fatalf("error after open = %q, want empty", got)
+5 -1
View File
@@ -286,7 +286,10 @@ func selectorEditorHelp(th *material.Theme, label, help string, editor *widget.E
return layout.Flex{Axis: layout.Vertical}.Layout(gtx,
layout.Rigid(func(gtx layout.Context) layout.Dimensions {
return layout.Flex{Alignment: layout.Middle}.Layout(gtx,
layout.Flexed(1, labeledEditor(th, label, editor, sensitive)),
layout.Flexed(1, func(gtx layout.Context) layout.Dimensions {
gtx.Constraints.Min.X = gtx.Constraints.Max.X
return labeledEditor(th, label, editor, sensitive)(gtx)
}),
layout.Rigid(layout.Spacer{Width: unit.Dp(8)}.Layout),
layout.Rigid(func(gtx layout.Context) layout.Dimensions {
return tonedButton(gtx, th, click, buttonLabel)
@@ -336,6 +339,7 @@ func labeledEditorWithFocus(
editor.Mask = '•'
}
defer func() { editor.Mask = mask }()
gtx.Constraints.Min.X = gtx.Constraints.Max.X
ed := material.Editor(th, editor, label)
return layout.UniformInset(unit.Dp(8)).Layout(gtx, ed.Layout)
})