From edeb62c25ded94ed42c29aec4452706f4e5fe943 Mon Sep 17 00:00:00 2001 From: Vladimir Golovnev Date: Wed, 13 Sep 2023 15:48:13 +0300 Subject: [PATCH] Prevent torrent from being started unexpectedly Improves "Metadata received" stop condition handling by "Add new torrent" dialog. The problem is when "Metadata received" stop condition is set the metadata can still be received 0.1 sec before clicking the "OK" button so torrent is actually added with metadata and therefore it cannot respect "Metadata received" stop condition. The solution is to uncheck "Start torrent" checkbox once metadata is received. PR #19597. Closes #19583. --- src/gui/addnewtorrentdialog.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/gui/addnewtorrentdialog.cpp b/src/gui/addnewtorrentdialog.cpp index cf0ee4aaa..1c7945806 100644 --- a/src/gui/addnewtorrentdialog.cpp +++ b/src/gui/addnewtorrentdialog.cpp @@ -330,7 +330,7 @@ AddNewTorrentDialog::AddNewTorrentDialog(const BitTorrent::AddTorrentParams &inP m_ui->stopConditionComboBox->setItemData(1, QVariant::fromValue(BitTorrent::Torrent::StopCondition::MetadataReceived)); m_ui->stopConditionComboBox->setItemData(2, QVariant::fromValue(BitTorrent::Torrent::StopCondition::FilesChecked)); m_ui->stopConditionComboBox->setCurrentIndex(m_ui->stopConditionComboBox->findData( - QVariant::fromValue(m_torrentParams.stopCondition.value_or(session->torrentStopCondition())))); + QVariant::fromValue(m_torrentParams.stopCondition.value_or(session->torrentStopCondition())))); m_ui->stopConditionLabel->setEnabled(m_ui->startTorrentCheckBox->isChecked()); m_ui->stopConditionComboBox->setEnabled(m_ui->startTorrentCheckBox->isChecked()); connect(m_ui->startTorrentCheckBox, &QCheckBox::toggled, this, [this](const bool checked) @@ -351,7 +351,7 @@ AddNewTorrentDialog::AddNewTorrentDialog(const BitTorrent::AddTorrentParams &inP m_ui->checkBoxRememberLastSavePath->setChecked(m_storeRememberLastSavePath); m_ui->contentLayoutComboBox->setCurrentIndex( - static_cast(m_torrentParams.contentLayout.value_or(session->torrentContentLayout()))); + static_cast(m_torrentParams.contentLayout.value_or(session->torrentContentLayout()))); connect(m_ui->contentLayoutComboBox, &QComboBox::currentIndexChanged, this, &AddNewTorrentDialog::contentLayoutChanged); m_ui->sequentialCheckBox->setChecked(m_torrentParams.sequential); @@ -927,6 +927,9 @@ void AddNewTorrentDialog::updateMetadata(const BitTorrent::TorrentInfo &metadata // Good to go m_torrentInfo = metadata; setMetadataProgressIndicator(true, tr("Parsing metadata...")); + const auto stopCondition = m_ui->stopConditionComboBox->currentData().value(); + if (stopCondition == BitTorrent::Torrent::StopCondition::MetadataReceived) + m_ui->startTorrentCheckBox->setChecked(false); // Update UI setupTreeview();