Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan White <support@dmapps.us>2022-09-22 15:40:23 +0300
committerJonathan White <support@dmapps.us>2022-09-23 14:50:06 +0300
commit3746452b885e1a128d6f358cc0aa7af6882a6679 (patch)
tree4e6c090197299903f4469ea90f3b5fbea45661f5
parent643ab4e95db130f9084961e1be95841a22b343cc (diff)
Fix crash when deleting items in recycle bin while searching (#8117)
* Fix #8099 * Clean up code that connects groups to the entry view. Instead of connecting ALL groups from ALL databases, we only need to connect the groups that entries actually belong to. This solves the bug and also reduces overhead.
-rw-r--r--src/gui/entry/EntryModel.cpp20
-rw-r--r--src/gui/entry/EntryModel.h3
2 files changed, 6 insertions, 17 deletions
diff --git a/src/gui/entry/EntryModel.cpp b/src/gui/entry/EntryModel.cpp
index 1c10195a2..76f24a786 100644
--- a/src/gui/entry/EntryModel.cpp
+++ b/src/gui/entry/EntryModel.cpp
@@ -85,25 +85,13 @@ void EntryModel::setEntries(const QList<Entry*>& entries)
m_entries = entries;
m_orgEntries = entries;
- QSet<Database*> databases;
-
- for (Entry* entry : asConst(m_entries)) {
- databases.insert(entry->group()->database());
- }
-
- for (Database* db : asConst(databases)) {
- Q_ASSERT(db);
- const QList<Group*> groupList = db->rootGroup()->groupsRecursive(true);
- for (const Group* group : groupList) {
- m_allGroups.append(group);
- }
-
- if (db->metadata()->recycleBin()) {
- m_allGroups.removeOne(db->metadata()->recycleBin());
+ for (const auto entry : asConst(m_entries)) {
+ if (entry->group()) {
+ m_allGroups.insert(entry->group());
}
}
- for (const Group* group : asConst(m_allGroups)) {
+ for (const auto group : m_allGroups) {
makeConnections(group);
}
diff --git a/src/gui/entry/EntryModel.h b/src/gui/entry/EntryModel.h
index cd34da7d4..8e79be384 100644
--- a/src/gui/entry/EntryModel.h
+++ b/src/gui/entry/EntryModel.h
@@ -20,6 +20,7 @@
#include <QAbstractTableModel>
#include <QPixmap>
+#include <QSet>
#include "core/Config.h"
@@ -87,7 +88,7 @@ private:
Group* m_group;
QList<Entry*> m_entries;
QList<Entry*> m_orgEntries;
- QList<const Group*> m_allGroups;
+ QSet<const Group*> m_allGroups;
const QString HiddenContentDisplay;
const Qt::DateFormat DateFormat;