diff --git a/src/core/models/entitytreemodel_p.h b/src/core/models/entitytreemodel_p.h --- a/src/core/models/entitytreemodel_p.h +++ b/src/core/models/entitytreemodel_p.h @@ -93,7 +93,7 @@ const Akonadi::Collection &destCollection); void monitoredItemAdded(const Akonadi::Item &item, const Akonadi::Collection &collection); - void monitoredItemRemoved(const Akonadi::Item &item); + void monitoredItemRemoved(const Akonadi::Item &item, const Akonadi::Collection &collection = Akonadi::Collection()); void monitoredItemChanged(const Akonadi::Item &item, const QSet &); void monitoredItemMoved(const Akonadi::Item &item, const Akonadi::Collection &, const Akonadi::Collection &); diff --git a/src/core/models/entitytreemodel_p.cpp b/src/core/models/entitytreemodel_p.cpp --- a/src/core/models/entitytreemodel_p.cpp +++ b/src/core/models/entitytreemodel_p.cpp @@ -1104,15 +1104,16 @@ q->endInsertRows(); } -void EntityTreeModelPrivate::monitoredItemRemoved(const Akonadi::Item &item) +void EntityTreeModelPrivate::monitoredItemRemoved(const Akonadi::Item &item, const Akonadi::Collection &parentCollection) { Q_Q(EntityTreeModel); if (isHidden(item)) { return; } - if ((m_itemPopulation == EntityTreeModel::LazyPopulation) && !m_populatedCols.contains(item.parentCollection().id())) { + if ((m_itemPopulation == EntityTreeModel::LazyPopulation) && + !m_populatedCols.contains(parentCollection.isValid() ? parentCollection.id() : item.parentCollection().id())) { return; } @@ -1197,10 +1198,10 @@ monitoredItemAdded(item, destCollection); return; } else if (isHidden(destCollection)) { - monitoredItemRemoved(item); + monitoredItemRemoved(item, sourceCollection); return; } else { - monitoredItemRemoved(item); + monitoredItemRemoved(item, sourceCollection); monitoredItemAdded(item, destCollection); return; }