From 0d8769755e75997db5b723dda96069151e47501d Mon Sep 17 00:00:00 2001 From: Alexey Rochev Date: Sun, 7 Jan 2024 22:59:52 +0300 Subject: [PATCH] Always activate add torrent dialogs when they are requested over ipc --- src/ui/screens/mainwindow/mainwindow.cpp | 42 +++++++++++++++--------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/src/ui/screens/mainwindow/mainwindow.cpp b/src/ui/screens/mainwindow/mainwindow.cpp index 928c4db4..7181bbf2 100644 --- a/src/ui/screens/mainwindow/mainwindow.cpp +++ b/src/ui/screens/mainwindow/mainwindow.cpp @@ -819,15 +819,18 @@ namespace tremotesf { } } - void addTorrentFiles(const QStringList& files, std::optional& activateFirstDialogWithToken) { + void addTorrentFiles( + const QStringList& files, bool activateWindows = false, std::optional windowActivationToken = {} + ) { auto* const settings = Settings::instance(); if (settings->showAddTorrentDialog()) { const bool setParent = settings->showMainWindowWhenAddingTorrent(); for (const QString& filePath : files) { auto* const dialog = showAddTorrentFileDialog(filePath, setParent); - if (activateFirstDialogWithToken.has_value()) { - activateWindow(dialog, *activateFirstDialogWithToken); - activateFirstDialogWithToken.reset(); + if (activateWindows) { + activateWindow(dialog, windowActivationToken); + // Can use token only once + windowActivationToken.reset(); } } } else { @@ -835,11 +838,6 @@ namespace tremotesf { } } - void addTorrentFiles(const QStringList& files) { - std::optional windowActivationToken{}; - addTorrentFiles(files, windowActivationToken); - } - QDialog* showAddTorrentFileDialog(const QString& filePath, bool setParent) { auto* const dialog = new AddTorrentDialog( mViewModel.rpc(), @@ -852,15 +850,18 @@ namespace tremotesf { return dialog; } - void addTorrentLinks(const QStringList& urls, std::optional& activateFirstDialogWithToken) { + void addTorrentLinks( + const QStringList& urls, bool activateWindows = false, std::optional windowActivationToken = {} + ) { auto* const settings = Settings::instance(); if (settings->showAddTorrentDialog()) { const bool setParent = settings->showMainWindowWhenAddingTorrent(); for (const QString& url : urls) { auto* const dialog = showAddTorrentLinkDialog(url, setParent); - if (activateFirstDialogWithToken.has_value()) { - activateWindow(dialog, *activateFirstDialogWithToken); - activateFirstDialogWithToken.reset(); + if (activateWindows) { + activateWindow(dialog, windowActivationToken); + // Can use token only once + windowActivationToken.reset(); } } } else { @@ -1568,7 +1569,11 @@ namespace tremotesf { &mViewModel, &MainWindowViewModel::showAddTorrentDialogs, this, - [messageWidget, this](const auto& files, const auto& urls, auto windowActivationToken) { + [messageWidget, this]( + const QStringList& files, + const QStringList& urls, + std::optional windowActivationToken + ) { if (messageWidget->isVisible()) { messageWidget->animatedHide(); } @@ -1577,8 +1582,13 @@ namespace tremotesf { showWindowsAndActivateMainOrDialog(windowActivationToken); windowActivationToken.reset(); } - addTorrentFiles(files, windowActivationToken); - addTorrentLinks(urls, windowActivationToken); + if (!files.isEmpty()) { + addTorrentFiles(files, true, windowActivationToken); + windowActivationToken.reset(); + } + if (!urls.isEmpty()) { + addTorrentLinks(urls, true, windowActivationToken); + } } );