diff --git a/src/GUI.cpp b/src/GUI.cpp index 42e1deb9f..faa896385 100644 --- a/src/GUI.cpp +++ b/src/GUI.cpp @@ -1365,7 +1365,11 @@ void GUI::updateLists(bool force) { finishedTorrentTab->updateTorrent(h); } else { // Update in download list - downloadingTorrentTab->updateTorrent(h); + if(downloadingTorrentTab->updateTorrent(h)) { + // Torrent was added, we may need to remove it from finished tab + finishedTorrentTab->deleteTorrent(h.hash()); + QFile::remove(misc::qBittorrentPath()+"BT_backup"+QDir::separator()+h.hash()+".finished"); + } } } } diff --git a/src/downloadingTorrents.cpp b/src/downloadingTorrents.cpp index e055c4e96..6faf46181 100644 --- a/src/downloadingTorrents.cpp +++ b/src/downloadingTorrents.cpp @@ -484,7 +484,8 @@ QStringList DownloadingTorrents::getSelectedTorrents(bool only_one) const{ // get information from torrent handles and // update download list accordingly -void DownloadingTorrents::updateTorrent(QTorrentHandle h) { +bool DownloadingTorrents::updateTorrent(QTorrentHandle h) { + bool added = false; try{ QString hash = h.hash(); int row = getRowFromHash(hash); @@ -492,6 +493,7 @@ void DownloadingTorrents::updateTorrent(QTorrentHandle h) { qDebug("Info: Could not find filename in download list, adding it..."); addTorrent(hash); row = getRowFromHash(hash); + added = true; } Q_ASSERT(row != -1); // Update Priority @@ -514,11 +516,11 @@ void DownloadingTorrents::updateTorrent(QTorrentHandle h) { DLListModel->setData(DLListModel->index(row, UPSPEED), QVariant((double)0.)); DLListModel->setData(DLListModel->index(row, SEEDSLEECH), QVariant("0/0")); setRowColor(row, QString::fromUtf8("grey")); - return; + return added; } } // No need to update a paused torrent - if(h.is_paused()) return; + if(h.is_paused()) return added; // Parse download state // Setting download state switch(h.state()) { @@ -567,6 +569,7 @@ void DownloadingTorrents::updateTorrent(QTorrentHandle h) { DLListModel->setData(DLListModel->index(row, RATIO), QVariant(misc::toQString(BTSession->getRealRatio(hash)))); } }catch(invalid_handle e) {} + return added; } void DownloadingTorrents::addTorrent(QString hash) { diff --git a/src/downloadingTorrents.h b/src/downloadingTorrents.h index 0c4c82b46..4650eae70 100644 --- a/src/downloadingTorrents.h +++ b/src/downloadingTorrents.h @@ -84,7 +84,7 @@ class DownloadingTorrents : public QWidget, public Ui::downloading{ void forceRecheck(); public slots: - void updateTorrent(QTorrentHandle h); + bool updateTorrent(QTorrentHandle h); void pauseTorrent(QString hash); void resumeTorrent(QString hash); void deleteTorrent(QString hash);