diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp
index 803b4afc2..f84641d42 100644
--- a/src/gui/mainwindow.cpp
+++ b/src/gui/mainwindow.cpp
@@ -927,18 +927,26 @@ void MainWindow::askRecursiveTorrentDownloadConfirmation(BitTorrent::TorrentHand
{
Preferences *const pref = Preferences::instance();
if (pref->recursiveDownloadDisabled()) return;
- // Get Torrent name
- QString torrentName = torrent->name();
- QMessageBox confirmBox(QMessageBox::Question, tr("Recursive download confirmation"), tr("The torrent '%1' contains torrent files, do you want to proceed with their download?").arg(torrentName), QMessageBox::NoButton, this);
- QPushButton *yes = confirmBox.addButton(tr("Yes"), QMessageBox::YesRole);
- /*QPushButton *no = */ confirmBox.addButton(tr("No"), QMessageBox::NoRole);
- QPushButton *never = confirmBox.addButton(tr("Never"), QMessageBox::NoRole);
- confirmBox.exec();
-
- if (confirmBox.clickedButton() == yes)
- BitTorrent::Session::instance()->recursiveTorrentDownload(torrent->hash());
- else if (confirmBox.clickedButton() == never)
- pref->disableRecursiveDownload();
+
+ const auto torrentHash = torrent->hash();
+
+ QMessageBox *confirmBox = new QMessageBox(QMessageBox::Question, tr("Recursive download confirmation")
+ , tr("The torrent '%1' contains torrent files, do you want to proceed with their download?").arg(torrent->name())
+ , QMessageBox::NoButton, this);
+ confirmBox->setAttribute(Qt::WA_DeleteOnClose);
+ confirmBox->setModal(true);
+
+ const QPushButton *yes = confirmBox->addButton(tr("Yes"), QMessageBox::YesRole);
+ /*QPushButton *no = */ confirmBox->addButton(tr("No"), QMessageBox::NoRole);
+ const QPushButton *never = confirmBox->addButton(tr("Never"), QMessageBox::NoRole);
+ connect(confirmBox, &QMessageBox::buttonClicked, this, [torrentHash, yes, never](const QAbstractButton *button)
+ {
+ if (button == yes)
+ BitTorrent::Session::instance()->recursiveTorrentDownload(torrentHash);
+ if (button == never)
+ Preferences::instance()->disableRecursiveDownload();
+ });
+ confirmBox->show();
}
void MainWindow::handleDownloadFromUrlFailure(QString url, QString reason) const
diff --git a/src/gui/optionsdialog.cpp b/src/gui/optionsdialog.cpp
index 7880796b2..6f91cbe38 100644
--- a/src/gui/optionsdialog.cpp
+++ b/src/gui/optionsdialog.cpp
@@ -254,6 +254,7 @@ OptionsDialog::OptionsDialog(QWidget *parent)
connect(m_ui->textTempPath, &FileSystemPathEdit::selectedPathChanged, this, &ThisType::enableApplyButton);
connect(m_ui->checkAppendqB, &QAbstractButton::toggled, this, &ThisType::enableApplyButton);
connect(m_ui->checkPreallocateAll, &QAbstractButton::toggled, this, &ThisType::enableApplyButton);
+ connect(m_ui->checkRecursiveDownload, &QAbstractButton::toggled, this, &ThisType::enableApplyButton);
connect(m_ui->checkAdditionDialog, &QGroupBox::toggled, this, &ThisType::enableApplyButton);
connect(m_ui->checkAdditionDialogFront, &QAbstractButton::toggled, this, &ThisType::enableApplyButton);
connect(m_ui->checkStartPaused, &QAbstractButton::toggled, this, &ThisType::enableApplyButton);
@@ -602,6 +603,7 @@ void OptionsDialog::saveOptions()
session->setTempPath(Utils::Fs::expandPathAbs(m_ui->textTempPath->selectedPath()));
session->setAppendExtensionEnabled(m_ui->checkAppendqB->isChecked());
session->setPreallocationEnabled(preAllocateAllFiles());
+ pref->disableRecursiveDownload(!m_ui->checkRecursiveDownload->isChecked());
AddNewTorrentDialog::setEnabled(useAdditionDialog());
AddNewTorrentDialog::setTopLevel(m_ui->checkAdditionDialogFront->isChecked());
session->setAddTorrentPaused(addTorrentsInPause());
@@ -849,6 +851,7 @@ void OptionsDialog::loadOptions()
m_ui->textTempPath->setSelectedPath(Utils::Fs::toNativePath(session->tempPath()));
m_ui->checkAppendqB->setChecked(session->isAppendExtensionEnabled());
m_ui->checkPreallocateAll->setChecked(session->isPreallocationEnabled());
+ m_ui->checkRecursiveDownload->setChecked(!pref->recursiveDownloadDisabled());
strValue = session->torrentExportDirectory();
if (strValue.isEmpty()) {
diff --git a/src/gui/optionsdialog.ui b/src/gui/optionsdialog.ui
index 0393990f8..9911c3158 100644
--- a/src/gui/optionsdialog.ui
+++ b/src/gui/optionsdialog.ui
@@ -779,6 +779,27 @@
+ -
+
+
+ Pre-allocate disk space for all files
+
+
+
+ -
+
+
+ Append .!qB extension to incomplete files
+
+
+
+ -
+
+
+ Enable recursive download dialog
+
+
+
-
@@ -1004,20 +1025,6 @@
- -
-
-
- Pre-allocate disk space for all files
-
-
-
- -
-
-
- Append .!qB extension to incomplete files
-
-
-