aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--launcher/ui/pages/modplatform/ModPage.cpp40
1 files changed, 22 insertions, 18 deletions
diff --git a/launcher/ui/pages/modplatform/ModPage.cpp b/launcher/ui/pages/modplatform/ModPage.cpp
index f245bfc2..f347d817 100644
--- a/launcher/ui/pages/modplatform/ModPage.cpp
+++ b/launcher/ui/pages/modplatform/ModPage.cpp
@@ -282,27 +282,31 @@ void ModPage::openUrl(const QUrl& url)
dialog->selectPage(page);
ModPage* newPage = dialog->getSelectedPage();
- newPage->ui->searchEdit->setText(slug);
- newPage->triggerSearch();
-
- ModPlatform::ListModel* model = newPage->listModel;
- QListView* view = newPage->ui->packView;
-
- connect(model->activeJob(), &Task::finished, [url, slug, model, view] {
- for (int row = 0; row < model->rowCount({}); row++) {
- QModelIndex index = model->index(row);
- auto pack = model->data(index, Qt::UserRole).value<ModPlatform::IndexedPack>();
- if (pack.slug == slug) {
- view->setCurrentIndex(index);
- return;
+ QLineEdit* searchEdit = newPage->ui->searchEdit;
+
+ if (searchEdit->text() != slug) {
+ searchEdit->setText(slug);
+ newPage->triggerSearch();
+
+ ModPlatform::ListModel* model = newPage->listModel;
+ QListView* view = newPage->ui->packView;
+
+ connect(model->activeJob(), &Task::finished, [url, slug, model, view] {
+ for (int row = 0; row < model->rowCount({}); row++) {
+ QModelIndex index = model->index(row);
+ auto pack = model->data(index, Qt::UserRole).value<ModPlatform::IndexedPack>();
+ if (pack.slug == slug) {
+ view->setCurrentIndex(index);
+ return;
+ }
}
- }
- // The final fallback.
- QDesktopServices::openUrl(url);
- });
+ // The final fallback.
+ QDesktopServices::openUrl(url);
+ });
- return;
+ return;
+ }
}
}