From 1991b4176c302ac30ea3a1539d139eaee574b0a5 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Mon, 22 Sep 2025 21:48:52 +1000 Subject: plugin: delete entries after emitting signal --- plugin/src/Caelestia/Models/filesystemmodel.cpp | 7 +++++-- plugin/src/Caelestia/appdb.cpp | 4 +++- 2 files changed, 8 insertions(+), 3 deletions(-) (limited to 'plugin/src/Caelestia') diff --git a/plugin/src/Caelestia/Models/filesystemmodel.cpp b/plugin/src/Caelestia/Models/filesystemmodel.cpp index feddea4..78a6df1 100644 --- a/plugin/src/Caelestia/Models/filesystemmodel.cpp +++ b/plugin/src/Caelestia/Models/filesystemmodel.cpp @@ -380,6 +380,8 @@ void FileSystemModel::applyChanges(const QSet& removedPaths, const QSet } std::sort(removedIndices.begin(), removedIndices.end(), std::greater()); + QList toDelete; + int start = -1; int end = -1; for (int idx : removedIndices) { @@ -392,7 +394,7 @@ void FileSystemModel::applyChanges(const QSet& removedPaths, const QSet beginRemoveRows(QModelIndex(), end, start); for (int i = start; i >= end; --i) { emit removed(m_entries[i]->path()); - m_entries.takeAt(i)->deleteLater(); + toDelete << m_entries.takeAt(i); } endRemoveRows(); @@ -404,7 +406,7 @@ void FileSystemModel::applyChanges(const QSet& removedPaths, const QSet beginRemoveRows(QModelIndex(), end, start); for (int i = start; i >= end; --i) { emit removed(m_entries[i]->path()); - m_entries.takeAt(i)->deleteLater(); + toDelete << m_entries.takeAt(i); } endRemoveRows(); } @@ -460,6 +462,7 @@ void FileSystemModel::applyChanges(const QSet& removedPaths, const QSet } emit entriesChanged(); + qDeleteAll(toDelete); } bool FileSystemModel::compareEntries(const FileSystemEntry* a, const FileSystemEntry* b) const { diff --git a/plugin/src/Caelestia/appdb.cpp b/plugin/src/Caelestia/appdb.cpp index 74d1873..19db096 100644 --- a/plugin/src/Caelestia/appdb.cpp +++ b/plugin/src/Caelestia/appdb.cpp @@ -207,15 +207,17 @@ void AppDb::updateApps() { newIds.insert(entry->property("id").toString()); } + QList toDelete; for (auto id : m_apps.keys()) { if (!newIds.contains(id)) { dirty = true; - m_apps.take(id)->deleteLater(); + toDelete << m_apps.take(id); } } if (dirty) { emit appsChanged(); + qDeleteAll(toDelete); } } -- cgit v1.2.3-freya