diff --git a/src/addnewtorrentdialog.cpp b/src/addnewtorrentdialog.cpp index 3db67e132..f59b717fd 100644 --- a/src/addnewtorrentdialog.cpp +++ b/src/addnewtorrentdialog.cpp @@ -60,6 +60,7 @@ AddNewTorrentDialog::AddNewTorrentDialog(QWidget *parent) : m_hasRenamedFile(false) { ui->setupUi(this); + setAttribute(Qt::WA_DeleteOnClose); ui->lblMetaLoading->setVisible(false); ui->progMetaLoading->setVisible(false); @@ -120,18 +121,22 @@ void AddNewTorrentDialog::saveState() pref->setAddNewTorrentDialogExpanded(ui->adv_button->isChecked()); } -void AddNewTorrentDialog::showTorrent(const QString &torrent_path, const QString& from_url) +void AddNewTorrentDialog::showTorrent(const QString &torrent_path, const QString& from_url, QWidget *parent) { - AddNewTorrentDialog dlg; - if (dlg.loadTorrent(torrent_path, from_url)) - dlg.exec(); + AddNewTorrentDialog *dlg = new AddNewTorrentDialog(parent); + if (dlg->loadTorrent(torrent_path, from_url)) + dlg->open(); + else + delete dlg; } -void AddNewTorrentDialog::showMagnet(const QString& link) +void AddNewTorrentDialog::showMagnet(const QString& link, QWidget *parent) { - AddNewTorrentDialog dlg; - if (dlg.loadMagnet(link)) - dlg.exec(); + AddNewTorrentDialog *dlg = new AddNewTorrentDialog(parent); + if (dlg->loadMagnet(link)) + dlg->open(); + else + delete dlg; } void AddNewTorrentDialog::showEvent(QShowEvent *event) { diff --git a/src/addnewtorrentdialog.h b/src/addnewtorrentdialog.h index 0d1b2dfe3..bdf4f971c 100644 --- a/src/addnewtorrentdialog.h +++ b/src/addnewtorrentdialog.h @@ -54,8 +54,8 @@ class AddNewTorrentDialog : public QDialog public: ~AddNewTorrentDialog(); - static void showTorrent(const QString& torrent_path, const QString& from_url = QString()); - static void showMagnet(const QString& torrent_link); + static void showTorrent(const QString& torrent_path, const QString& from_url, QWidget *parent = 0); + static void showMagnet(const QString& torrent_link, QWidget *parent = 0); protected: void showEvent(QShowEvent *event); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 53e0edf84..41130512e 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -890,13 +890,13 @@ void MainWindow::dropEvent(QDropEvent *event) { } if (file.startsWith("magnet:", Qt::CaseInsensitive)) { if (useTorrentAdditionDialog) - AddNewTorrentDialog::showMagnet(file); + AddNewTorrentDialog::showMagnet(file, this); else QBtSession::instance()->addMagnetUri(file); } else { // Local file if (useTorrentAdditionDialog) - AddNewTorrentDialog::showTorrent(file); + AddNewTorrentDialog::showTorrent(file, QString(), this); else QBtSession::instance()->addTorrent(file); } @@ -932,7 +932,7 @@ void MainWindow::on_actionOpen_triggered() { const uint listSize = pathsList.size(); for (uint i=0; iuseAdditionDialog()) - AddNewTorrentDialog::showTorrent(pathsList.at(i)); + AddNewTorrentDialog::showTorrent(pathsList.at(i), QString(), this); else QBtSession::instance()->addTorrent(pathsList.at(i)); } @@ -975,12 +975,12 @@ void MainWindow::processParams(const QStringList& params) { } if (param.startsWith("magnet:", Qt::CaseInsensitive)) { if (useTorrentAdditionDialog) - AddNewTorrentDialog::showMagnet(param); + AddNewTorrentDialog::showMagnet(param, this); else QBtSession::instance()->addMagnetUri(param); } else { if (useTorrentAdditionDialog) - AddNewTorrentDialog::showTorrent(param); + AddNewTorrentDialog::showTorrent(param, QString(), this); else QBtSession::instance()->addTorrent(param); } @@ -995,7 +995,7 @@ void MainWindow::addTorrent(QString path) { void MainWindow::processDownloadedFiles(QString path, QString url) { Preferences* const pref = Preferences::instance(); if (pref->useAdditionDialog()) - AddNewTorrentDialog::showTorrent(path, url); + AddNewTorrentDialog::showTorrent(path, url, this); else QBtSession::instance()->addTorrent(path, false, url); } @@ -1003,7 +1003,7 @@ void MainWindow::processDownloadedFiles(QString path, QString url) { void MainWindow::processNewMagnetLink(const QString& link) { Preferences* const pref = Preferences::instance(); if (pref->useAdditionDialog()) - AddNewTorrentDialog::showMagnet(link); + AddNewTorrentDialog::showMagnet(link, this); else QBtSession::instance()->addMagnetUri(link); } @@ -1198,7 +1198,7 @@ void MainWindow::downloadFromURLList(const QStringList& url_list) { } if (url.startsWith("magnet:", Qt::CaseInsensitive)) { if (useTorrentAdditionDialog) - AddNewTorrentDialog::showMagnet(url); + AddNewTorrentDialog::showMagnet(url, this); else QBtSession::instance()->addMagnetUri(url); }