diff --git a/src/FinishedTorrents.cpp b/src/FinishedTorrents.cpp index 552aea382..50e801860 100644 --- a/src/FinishedTorrents.cpp +++ b/src/FinishedTorrents.cpp @@ -383,6 +383,20 @@ void FinishedTorrents::deleteTorrent(QString hash){ qDebug("Torrent is not in finished list, nothing to delete"); return; } + // Select item just under (or above nothing under) the one that was deleted + QModelIndex current_prox_index = proxyModel->mapFromSource(finishedListModel->index(row, 0, finishedList->rootIndex())); + bool was_selected = finishedList->selectionModel()->isSelected(current_prox_index); + if(finishedListModel->rowCount() > 1 && was_selected) { + QModelIndex under_prox_index; + if(current_prox_index.row() == finishedListModel->rowCount()-1) + under_prox_index = proxyModel->index(current_prox_index.row()-1, 0); + else + under_prox_index = proxyModel->index(current_prox_index.row()+1, 0); + //downloadList->selectionModel()->select(under_prox_index, QItemSelectionModel::Current|QItemSelectionModel::Columns|QItemSelectionModel::Select); + finishedList->setCurrentIndex(under_prox_index); + finishedList->update(); + } + // Actually delete the row finishedListModel->removeRow(row); --nbFinished; emit finishedTorrentsNumberChanged(nbFinished); diff --git a/src/GUI.cpp b/src/GUI.cpp index da541499d..7bc68ac43 100644 --- a/src/GUI.cpp +++ b/src/GUI.cpp @@ -868,6 +868,7 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent), dis default: return; } + if(hashes.empty()) return; int ret; if(inDownloadList) { ret = QMessageBox::question( @@ -919,7 +920,7 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent), dis default: return; } - if(!hashes.size()) return; + if(hashes.empty()) return; int ret; if(inDownloadList) { ret = QMessageBox::question( diff --git a/src/downloadingTorrents.cpp b/src/downloadingTorrents.cpp index 63690ac60..d4e4638ba 100644 --- a/src/downloadingTorrents.cpp +++ b/src/downloadingTorrents.cpp @@ -198,6 +198,20 @@ void DownloadingTorrents::deleteTorrent(QString hash) { qDebug("torrent is not in download list, nothing to delete"); return; } + // Select item just under (or above nothing under) the one that was deleted + QModelIndex current_prox_index = proxyModel->mapFromSource(DLListModel->index(row, 0, downloadList->rootIndex())); + bool was_selected = downloadList->selectionModel()->isSelected(current_prox_index); + if(DLListModel->rowCount() > 1 && was_selected) { + QModelIndex under_prox_index; + if(current_prox_index.row() == DLListModel->rowCount()-1) + under_prox_index = proxyModel->index(current_prox_index.row()-1, 0); + else + under_prox_index = proxyModel->index(current_prox_index.row()+1, 0); + //downloadList->selectionModel()->select(under_prox_index, QItemSelectionModel::Current|QItemSelectionModel::Columns|QItemSelectionModel::Select); + downloadList->setCurrentIndex(under_prox_index); + downloadList->update(); + } + // Actually delete the row DLListModel->removeRow(row); --nbTorrents; emit unfinishedTorrentsNumberChanged(nbTorrents);