diff --git a/src/engine/writetransaction.h b/src/engine/writetransaction.h --- a/src/engine/writetransaction.h +++ b/src/engine/writetransaction.h @@ -59,15 +59,18 @@ void removeRecursively(quint64 parentId, Functor shouldDelete) { DocumentUrlDB docUrlDB(m_dbis.idTreeDbi, m_dbis.idFilenameDbi, m_txn); - if (shouldDelete(parentId)) { - removeRecursively(parentId); + if (!shouldDelete(parentId)) { return; } const QVector children = docUrlDB.getChildren(parentId); for (quint64 id : children) { removeRecursively(id, shouldDelete); } + // refetch + if (docUrlDB.getChildren(parentId).isEmpty()) { + removeDocument(parentId); + } } void replaceDocument(const Document& doc, DocumentOperations operations); diff --git a/src/file/indexcleaner.cpp b/src/file/indexcleaner.cpp --- a/src/file/indexcleaner.cpp +++ b/src/file/indexcleaner.cpp @@ -81,7 +81,7 @@ for (const QString& folder : excludeFolders) { quint64 id = filePathToId(QFile::encodeName(folder)); if (tr.hasDocument(id)) { - tr.removeRecursively(id); + tr.removeRecursively(id, shouldDelete); } } tr.commit();