diff options
-rw-r--r-- | launcher/ui/pages/modplatform/ModPage.cpp | 40 |
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; + } } } |