From 634aa9857fb470010d3b8c8d4b2eb66b28b8489c Mon Sep 17 00:00:00 2001 From: HarukiToreda <116696711+HarukiToreda@users.noreply.github.com> Date: Sun, 14 Dec 2025 00:44:01 -0500 Subject: [PATCH] Fix for "delete this chat" now it does delete the current one --- src/MessageStore.cpp | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/MessageStore.cpp b/src/MessageStore.cpp index 8181315c4..c96645b1c 100644 --- a/src/MessageStore.cpp +++ b/src/MessageStore.cpp @@ -296,22 +296,23 @@ void MessageStore::clearAllMessages() template static void eraseIf(std::deque &deque, Predicate pred, bool fromBack = false) { if (fromBack) { - // Iterate from the back and erase the first match from the end - for (auto it = deque.rbegin(); it != deque.rend(); ++it) { + // Iterate from the back and erase all matches from the end + for (auto it = deque.rbegin(); it != deque.rend();) { if (pred(*it)) { - deque.erase(std::next(it).base()); - break; + it = std::deque::reverse_iterator(deque.erase(std::next(it).base())); + } else { + ++it; } } } else { - // Manual forward search to avoid std::find_if - auto it = deque.begin(); - for (; it != deque.end(); ++it) { - if (pred(*it)) - break; + // Manual forward search to erase all matches + for (auto it = deque.begin(); it != deque.end();) { + if (pred(*it)) { + it = deque.erase(it); + } else { + ++it; + } } - if (it != deque.end()) - deque.erase(it); } }