diff --git a/src/FinishedTorrents.cpp b/src/FinishedTorrents.cpp index 35dd2698e..b72c0ae5e 100644 --- a/src/FinishedTorrents.cpp +++ b/src/FinishedTorrents.cpp @@ -178,7 +178,7 @@ void FinishedTorrents::updateFinishedList(){ if(h.state() == torrent_status::downloading || (h.state() != torrent_status::checking_files && h.state() != torrent_status::queued_for_checking && h.progress() < 1.)) { // What are you doing here? go back to download tab! qDebug("Info: a torrent was moved from finished to download tab"); - deleteFromFinishedList(hash); + deleteFromFinishedList(hash, true); BTSession->setFinishedTorrent(hash); emit torrentMovedFromFinishedList(h); continue; @@ -200,14 +200,15 @@ int FinishedTorrents::getRowFromHash(QString hash) const{ } // Will move it to download tab -void FinishedTorrents::deleteFromFinishedList(QString hash){ +void FinishedTorrents::deleteFromFinishedList(QString hash, bool switchTab){ int row = getRowFromHash(hash); Q_ASSERT(row != -1); finishedListModel->removeRow(row); QFile::remove(misc::qBittorrentPath()+"BT_backup"+QDir::separator()+hash+".finished"); --nbFinished; ((GUI*)parent)->setTabText(1, tr("Finished") +" ("+QString::fromUtf8(misc::toString(nbFinished).c_str())+")"); - BTSession->setUnfinishedTorrent(hash); + if(switchTab) + BTSession->setUnfinishedTorrent(hash); } QTreeView* FinishedTorrents::getFinishedList(){ diff --git a/src/FinishedTorrents.h b/src/FinishedTorrents.h index c309c6835..c32c2a6b4 100644 --- a/src/FinishedTorrents.h +++ b/src/FinishedTorrents.h @@ -53,7 +53,7 @@ class FinishedTorrents : public QWidget, public Ui::seeding{ public slots: void addFinishedTorrent(QString hash); void updateFinishedList(); - void deleteFromFinishedList(QString hash); + void deleteFromFinishedList(QString hash, bool switchTab=false); void showProperties(const QModelIndex &index); void propertiesSelection(); void displayFinishedListMenu(const QPoint&); diff --git a/src/GUI.cpp b/src/GUI.cpp index f18d23faa..66acf072b 100644 --- a/src/GUI.cpp +++ b/src/GUI.cpp @@ -554,6 +554,10 @@ void GUI::updateDlList(bool force) { QString hash; foreach(hash, unfinishedTorrents) { QTorrentHandle h = BTSession->getTorrentHandle(hash); + if(!h.is_valid()){ + qDebug("We have an invalid handle for: %s", qPrintable(hash)); + continue; + } try{ QString hash = h.hash(); int row = getRowFromHash(hash); @@ -1027,7 +1031,7 @@ void GUI::on_actionDelete_Permanently_triggered() { --nbTorrents; tabs->setTabText(0, tr("Downloads") +QString::fromUtf8(" (")+misc::toQString(nbTorrents)+QString::fromUtf8(")")); } else { - finishedTorrentTab->deleteFromFinishedList(hash); + finishedTorrentTab->deleteFromFinishedList(hash, false); } // Update info bar setInfoBar(tr("'%1' was removed permanently.", "'xxx.avi' was removed permanently.").arg(fileName)); @@ -1102,7 +1106,7 @@ void GUI::on_actionDelete_triggered() { --nbTorrents; tabs->setTabText(0, tr("Downloads") +QString::fromUtf8(" (")+misc::toQString(nbTorrents)+QString::fromUtf8(")")); } else { - finishedTorrentTab->deleteFromFinishedList(hash); + finishedTorrentTab->deleteFromFinishedList(hash, false); } // Update info bar setInfoBar(tr("'%1' was removed.", "'xxx.avi' was removed.").arg(fileName));