diff --git a/src/gui/transferlistmodel.cpp b/src/gui/transferlistmodel.cpp index 0a65f220e..370418779 100644 --- a/src/gui/transferlistmodel.cpp +++ b/src/gui/transferlistmodel.cpp @@ -325,13 +325,20 @@ void TransferListModel::handleTorrentStatusUpdated(BitTorrent::TorrentHandle *co void TransferListModel::handleTorrentsUpdated(const QVector &torrents) { const int columns = (columnCount() - 1); - for (BitTorrent::TorrentHandle *const torrent : torrents) { - const int row = m_torrentMap.value(torrent, -1); - if (row < 0) - continue; + if (torrents.size() <= (m_torrentList.size() * 0.5)) { + for (BitTorrent::TorrentHandle *const torrent : torrents) { + const int row = m_torrentMap.value(torrent, -1); - emit dataChanged(index(row, 0), index(row, columns)); + if (row < 0) + continue; + + emit dataChanged(index(row, 0), index(row, columns)); + } + } + else { + // save the overhead when more than half of the torrent list needs update + emit dataChanged(index(0, 0), index((rowCount() - 1), columns)); } }