diff --git a/src/placesview.cpp b/src/placesview.cpp index cc220e7b..d1380926 100644 --- a/src/placesview.cpp +++ b/src/placesview.cpp @@ -50,6 +50,7 @@ PlacesProxyModel::~PlacesProxyModel() { void PlacesProxyModel::restoreHiddenItems(const QSet& items) { // hidden items should be restored only once if(!hiddenItemsRestored_ && !items.isEmpty()) { + beginFilterChange(); hidden_.clear(); QSet::const_iterator i = items.constBegin(); while (i != items.constEnd()) { @@ -59,11 +60,12 @@ void PlacesProxyModel::restoreHiddenItems(const QSet& items) { ++i; } hiddenItemsRestored_ = true; - invalidateFilter(); + endFilterChange(); } } void PlacesProxyModel::setHidden(const QString& str, bool hide) { + beginFilterChange(); if(hide) { if(!str.isEmpty()) { hidden_ << str; @@ -72,12 +74,13 @@ void PlacesProxyModel::setHidden(const QString& str, bool hide) { else { hidden_.remove(str); } - invalidateFilter(); + endFilterChange(); } void PlacesProxyModel::showAll(bool show) { + beginFilterChange(); showAll_ = show; - invalidateFilter(); + endFilterChange(); } bool PlacesProxyModel::filterAcceptsRow(int source_row, const QModelIndex& source_parent) const { diff --git a/src/proxyfoldermodel.cpp b/src/proxyfoldermodel.cpp index 3bfe87b5..3cd2b141 100644 --- a/src/proxyfoldermodel.cpp +++ b/src/proxyfoldermodel.cpp @@ -87,16 +87,18 @@ void ProxyFolderModel::sort(int column, Qt::SortOrder order) { void ProxyFolderModel::setShowHidden(bool show) { if(show != showHidden_) { + beginFilterChange(); showHidden_ = show; - invalidateFilter(); + endFilterChange(); Q_EMIT sortFilterChanged(); } } void ProxyFolderModel::setBackupAsHidden(bool backupAsHidden) { if(backupAsHidden != backupAsHidden_) { + beginFilterChange(); backupAsHidden_ = backupAsHidden; - invalidateFilter(); + endFilterChange(); Q_EMIT sortFilterChanged(); } } @@ -341,14 +343,16 @@ void ProxyFolderModel::onThumbnailLoaded(const QModelIndex& srcIndex, int size) } void ProxyFolderModel::addFilter(ProxyFolderModelFilter* filter) { + beginFilterChange(); filters_.append(filter); - invalidateFilter(); + endFilterChange(); Q_EMIT sortFilterChanged(); } void ProxyFolderModel::removeFilter(ProxyFolderModelFilter* filter) { + beginFilterChange(); filters_.removeOne(filter); - invalidateFilter(); + endFilterChange(); Q_EMIT sortFilterChanged(); }