From 1cb50c5b04c346c33180dff80008619a100420b1 Mon Sep 17 00:00:00 2001 From: Slavasil Date: Sun, 3 May 2026 14:53:18 +0300 Subject: [PATCH] modified entries now retain their position --- .../PasswordStore/IPassStoreDirectory.cs | 1 + .../PasswordStore/PassStoreEntryGroup.cs | 15 +++++++++++++++ .../ViewModels/UnlockedRepositoryViewModel.cs | 3 +-- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/KeyKeeper/PasswordStore/IPassStoreDirectory.cs b/src/KeyKeeper/PasswordStore/IPassStoreDirectory.cs index beb0718..03996c6 100644 --- a/src/KeyKeeper/PasswordStore/IPassStoreDirectory.cs +++ b/src/KeyKeeper/PasswordStore/IPassStoreDirectory.cs @@ -7,4 +7,5 @@ public interface IPassStoreDirectory : IEnumerable { bool DeleteEntry(Guid id); void AddEntry(PassStoreEntry entry); + void UpdateEntry(Guid id, PassStoreEntry entry); } diff --git a/src/KeyKeeper/PasswordStore/PassStoreEntryGroup.cs b/src/KeyKeeper/PasswordStore/PassStoreEntryGroup.cs index 4bed5da..53ebd77 100644 --- a/src/KeyKeeper/PasswordStore/PassStoreEntryGroup.cs +++ b/src/KeyKeeper/PasswordStore/PassStoreEntryGroup.cs @@ -85,6 +85,21 @@ public class PassStoreEntryGroup : PassStoreEntry, IPassStoreDirectory return false; } + public void UpdateEntry(Guid id, PassStoreEntry entry) + { + entry.Parent = this; + if (ChildEntries == null) + return; + for (int i = 0; i < ChildEntries.Count; i++) + { + if (ChildEntries[i].Id == id) + { + ChildEntries[i] = entry; + return; + } + } + } + IEnumerator IEnumerable.GetEnumerator() { return ChildEntries.GetEnumerator(); diff --git a/src/KeyKeeper/ViewModels/UnlockedRepositoryViewModel.cs b/src/KeyKeeper/ViewModels/UnlockedRepositoryViewModel.cs index 101994c..444cdac 100644 --- a/src/KeyKeeper/ViewModels/UnlockedRepositoryViewModel.cs +++ b/src/KeyKeeper/ViewModels/UnlockedRepositoryViewModel.cs @@ -77,8 +77,7 @@ public class UnlockedRepositoryViewModel : ViewModelBase public void UpdateEntry(PassStoreEntryPassword updatedEntry) { - currentDirectory.DeleteEntry(updatedEntry.Id); - currentDirectory.AddEntry(updatedEntry); + currentDirectory.UpdateEntry(updatedEntry.Id, updatedEntry); HasUnsavedChanges = true; OnPropertyChanged(nameof(Passwords)); }