aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--launcher/ui/dialogs/ModDownloadDialog.cpp13
-rw-r--r--launcher/ui/dialogs/ModDownloadDialog.h4
-rw-r--r--launcher/ui/pages/modplatform/ModPage.cpp10
3 files changed, 20 insertions, 7 deletions
diff --git a/launcher/ui/dialogs/ModDownloadDialog.cpp b/launcher/ui/dialogs/ModDownloadDialog.cpp
index 7f6f450c..876f015a 100644
--- a/launcher/ui/dialogs/ModDownloadDialog.cpp
+++ b/launcher/ui/dialogs/ModDownloadDialog.cpp
@@ -132,6 +132,8 @@ QList<BasePage*> ModDownloadDialog::getPages()
if (APPLICATION->capabilities() & Application::SupportsFlame)
pages.append(FlameModPage::create(this, m_instance));
+ m_selected_page = dynamic_cast<ModPage*>(pages[0]);
+
return pages;
}
@@ -179,17 +181,22 @@ void ModDownloadDialog::selectedPageChanged(BasePage* previous, BasePage* select
return;
}
- auto* selected_page = dynamic_cast<ModPage*>(selected);
- if (!selected_page) {
+ m_selected_page = dynamic_cast<ModPage*>(selected);
+ if (!m_selected_page) {
qCritical() << "Page '" << selected->displayName() << "' in ModDownloadDialog is not a ModPage!";
return;
}
// Same effect as having a global search bar
- selected_page->setSearchTerm(prev_page->getSearchTerm());
+ m_selected_page->setSearchTerm(prev_page->getSearchTerm());
}
bool ModDownloadDialog::selectPage(QString pageId)
{
return m_container->selectPage(pageId);
+}
+
+ModPage* ModDownloadDialog::getSelectedPage()
+{
+ return m_selected_page;
} \ No newline at end of file
diff --git a/launcher/ui/dialogs/ModDownloadDialog.h b/launcher/ui/dialogs/ModDownloadDialog.h
index 6227b58e..c637a70a 100644
--- a/launcher/ui/dialogs/ModDownloadDialog.h
+++ b/launcher/ui/dialogs/ModDownloadDialog.h
@@ -25,6 +25,7 @@
#include "ModDownloadTask.h"
#include "minecraft/mod/ModFolderModel.h"
#include "ui/pages/BasePageProvider.h"
+#include "ui/pages/modplatform/ModPage.h"
namespace Ui
{
@@ -56,6 +57,8 @@ public:
bool selectPage(QString pageId);
+ ModPage* getSelectedPage();
+
public slots:
void confirm();
void accept() override;
@@ -69,6 +72,7 @@ private:
PageContainer * m_container = nullptr;
QDialogButtonBox * m_buttons = nullptr;
QVBoxLayout *m_verticalLayout = nullptr;
+ ModPage *m_selected_page = nullptr;
QHash<QString, ModDownloadTask*> modTask;
BaseInstance *m_instance;
diff --git a/launcher/ui/pages/modplatform/ModPage.cpp b/launcher/ui/pages/modplatform/ModPage.cpp
index 780750a8..6a53e25e 100644
--- a/launcher/ui/pages/modplatform/ModPage.cpp
+++ b/launcher/ui/pages/modplatform/ModPage.cpp
@@ -282,11 +282,13 @@ void ModPage::openUrl(const QUrl& url)
// intended to view in their web browser
if (!slug.isEmpty() && !slug.contains('/') && slug != current.slug) {
dialog->selectPage(page);
- ui->searchEdit->setText(slug);
- triggerSearch();
- connect(listModel->activeJob(), &Task::finished, [this] {
- ui->packView->setCurrentIndex(listModel->index(0));
+ ModPage* newPage = dialog->getSelectedPage();
+ newPage->ui->searchEdit->setText(slug);
+ newPage->triggerSearch();
+
+ connect(newPage->listModel->activeJob(), &Task::finished, [newPage] {
+ newPage->ui->packView->setCurrentIndex(newPage->listModel->index(0));
});
return;