diff --git a/lib/thumbnailview/thumbnailview.cpp b/lib/thumbnailview/thumbnailview.cpp --- a/lib/thumbnailview/thumbnailview.cpp +++ b/lib/thumbnailview/thumbnailview.cpp @@ -358,8 +358,13 @@ disconnect(model(), nullptr, this, nullptr); } QListView::setModel(newModel); - connect(model(), &QAbstractItemModel::rowsRemoved, - this, &ThumbnailView::rowsRemovedSignal); + + connect(model(), &QAbstractItemModel::rowsRemoved, this, [=](const QModelIndex &index, int first, int last) { + // Avoid the delegate doing a ton of work if we're not visible + if (isVisible()) { + emit rowsRemovedSignal(index, first, last); + } + }); } void ThumbnailView::setThumbnailProvider(ThumbnailProvider* thumbnailProvider) @@ -512,7 +517,10 @@ { QListView::rowsInserted(parent, start, end); d->mScheduledThumbnailGenerationTimer.start(); - emit rowsInsertedSignal(parent, start, end); + + if (isVisible()) { + emit rowsInsertedSignal(parent, start, end); + } } void ThumbnailView::dataChanged(const QModelIndex& topLeft, const QModelIndex& bottomRight, const QVector &roles)