mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2025-02-11 19:09:43 +08:00
Don't start separate event loop for QFileDialog
It conflicts with QMenu on Qt6 that causes the crash. PR #16158.
This commit is contained in:
parent
4d54fb675f
commit
5d69334287
@ -331,19 +331,35 @@ QVector<BitTorrent::Torrent *> TransferListWidget::getVisibleTorrents() const
|
||||
void TransferListWidget::setSelectedTorrentsLocation()
|
||||
{
|
||||
const QVector<BitTorrent::Torrent *> torrents = getSelectedTorrents();
|
||||
if (torrents.isEmpty()) return;
|
||||
if (torrents.isEmpty())
|
||||
return;
|
||||
|
||||
const QString oldLocation = torrents[0]->savePath();
|
||||
const QString newLocation = QFileDialog::getExistingDirectory(this, tr("Choose save path"), oldLocation,
|
||||
(QFileDialog::DontConfirmOverwrite | QFileDialog::ShowDirsOnly | QFileDialog::HideNameFilterDetails));
|
||||
if (newLocation.isEmpty() || !QDir(newLocation).exists()) return;
|
||||
|
||||
// Actually move storage
|
||||
for (BitTorrent::Torrent *const torrent : torrents)
|
||||
auto fileDialog = new QFileDialog(this, tr("Choose save path"), oldLocation);
|
||||
fileDialog->setAttribute(Qt::WA_DeleteOnClose);
|
||||
fileDialog->setFileMode(QFileDialog::Directory);
|
||||
fileDialog->setModal(true);
|
||||
fileDialog->setOptions(QFileDialog::DontConfirmOverwrite | QFileDialog::ShowDirsOnly | QFileDialog::HideNameFilterDetails);
|
||||
connect(fileDialog, &QDialog::accepted, this, [this, fileDialog]()
|
||||
{
|
||||
torrent->setAutoTMMEnabled(false);
|
||||
torrent->setSavePath(Utils::Fs::expandPathAbs(newLocation));
|
||||
}
|
||||
const QVector<BitTorrent::Torrent *> torrents = getSelectedTorrents();
|
||||
if (torrents.isEmpty())
|
||||
return;
|
||||
|
||||
const QString newLocation = fileDialog->selectedFiles().constFirst();
|
||||
if (newLocation.isEmpty() || !QDir(newLocation).exists())
|
||||
return;
|
||||
|
||||
// Actually move storage
|
||||
for (BitTorrent::Torrent *const torrent : torrents)
|
||||
{
|
||||
torrent->setAutoTMMEnabled(false);
|
||||
torrent->setSavePath(newLocation);
|
||||
}
|
||||
});
|
||||
|
||||
fileDialog->show();
|
||||
}
|
||||
|
||||
void TransferListWidget::pauseAllTorrents()
|
||||
|
Loading…
Reference in New Issue
Block a user