diff options
| author | TheKodeToad <TheKodeToad@proton.me> | 2023-06-21 15:35:09 +0100 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-06-21 15:35:09 +0100 | 
| commit | 0975dbc3dd3589d10338c9821a7dbc36a5bfaafb (patch) | |
| tree | f98d8e4c61ae76348aa3c335307070a558fcd72d | |
| parent | 8aa02320e0c65647675f47de64217c3399650b02 (diff) | |
| parent | d02858040ef0d1f691b3456bb0ac271c484a7c57 (diff) | |
| download | PrismLauncher-0975dbc3dd3589d10338c9821a7dbc36a5bfaafb.tar.gz PrismLauncher-0975dbc3dd3589d10338c9821a7dbc36a5bfaafb.tar.bz2 PrismLauncher-0975dbc3dd3589d10338c9821a7dbc36a5bfaafb.zip | |
Merge pull request #1228 from Trial97/curent_pack_crash
Fixes #1212
| -rw-r--r-- | launcher/ui/pages/modplatform/ModPage.cpp | 16 | ||||
| -rw-r--r-- | launcher/ui/pages/modplatform/ResourcePage.cpp | 31 | 
2 files changed, 25 insertions, 22 deletions
| diff --git a/launcher/ui/pages/modplatform/ModPage.cpp b/launcher/ui/pages/modplatform/ModPage.cpp index 95064d16..60a43128 100644 --- a/launcher/ui/pages/modplatform/ModPage.cpp +++ b/launcher/ui/pages/modplatform/ModPage.cpp @@ -89,17 +89,13 @@ void ModPage::filterMods()  void ModPage::triggerSearch()  { -    auto changed = m_filter_widget->changed();      m_filter = m_filter_widget->getFilter(); +    m_ui->packView->clearSelection(); +    m_ui->packDescription->clear(); +    m_ui->versionSelectionBox->clear(); +    updateSelectionButton(); -    if (changed) { -        m_ui->packView->clearSelection(); -        m_ui->packDescription->clear(); -        m_ui->versionSelectionBox->clear(); -        updateSelectionButton(); -    } - -    static_cast<ModModel*>(m_model)->searchWithTerm(getSearchTerm(), m_ui->sortByBox->currentData().toUInt(), changed); +    static_cast<ModModel*>(m_model)->searchWithTerm(getSearchTerm(), m_ui->sortByBox->currentData().toUInt(), m_filter_widget->changed());      m_fetch_progress.watch(m_model->activeSearchJob().get());  } @@ -122,6 +118,8 @@ void ModPage::updateVersionList()      QString mcVersion = packProfile->getComponentVersion("net.minecraft");      auto current_pack = getCurrentPack(); +    if (!current_pack) +        return;      for (int i = 0; i < current_pack->versions.size(); i++) {          auto version = current_pack->versions[i];          bool valid = false; diff --git a/launcher/ui/pages/modplatform/ResourcePage.cpp b/launcher/ui/pages/modplatform/ResourcePage.cpp index 1d2509d8..aab2ee89 100644 --- a/launcher/ui/pages/modplatform/ResourcePage.cpp +++ b/launcher/ui/pages/modplatform/ResourcePage.cpp @@ -174,7 +174,11 @@ ModPlatform::IndexedPack::Ptr ResourcePage::getCurrentPack() const  void ResourcePage::updateUi()  {      auto current_pack = getCurrentPack(); - +    if (!current_pack) { +        m_ui->packDescription->setHtml({}); +        m_ui->packDescription->flush(); +        return; +    }      QString text = "";      QString name = current_pack->name; @@ -240,8 +244,8 @@ void ResourcePage::updateSelectionButton()      }      m_ui->resourceSelectionButton->setEnabled(true); -    if (getCurrentPack()) { -        if (!getCurrentPack()->isVersionSelected(m_selected_version_index)) +    if (auto current_pack = getCurrentPack(); current_pack) { +        if (!current_pack->isVersionSelected(m_selected_version_index))              m_ui->resourceSelectionButton->setText(tr("Select %1 for download").arg(resourceString()));          else              m_ui->resourceSelectionButton->setText(tr("Deselect %1 for download").arg(resourceString())); @@ -258,13 +262,14 @@ void ResourcePage::updateVersionList()      m_ui->versionSelectionBox->clear();      m_ui->versionSelectionBox->blockSignals(false); -    for (int i = 0; i < current_pack->versions.size(); i++) { -        auto& version = current_pack->versions[i]; -        if (optedOut(version)) -            continue; +    if (current_pack) +        for (int i = 0; i < current_pack->versions.size(); i++) { +            auto& version = current_pack->versions[i]; +            if (optedOut(version)) +                continue; -        m_ui->versionSelectionBox->addItem(current_pack->versions[i].version, QVariant(i)); -    } +            m_ui->versionSelectionBox->addItem(current_pack->versions[i].version, QVariant(i)); +        }      if (m_ui->versionSelectionBox->count() == 0) {          m_ui->versionSelectionBox->addItem(tr("No valid version found."), QVariant(-1)); @@ -283,7 +288,7 @@ void ResourcePage::onSelectionChanged(QModelIndex curr, QModelIndex prev)      auto current_pack = getCurrentPack();      bool request_load = false; -    if (!current_pack->versionsLoaded) { +    if (!current_pack || !current_pack->versionsLoaded) {          m_ui->resourceSelectionButton->setText(tr("Loading versions..."));          m_ui->resourceSelectionButton->setEnabled(false); @@ -292,7 +297,7 @@ void ResourcePage::onSelectionChanged(QModelIndex curr, QModelIndex prev)          updateVersionList();      } -    if (!current_pack->extraDataLoaded) +    if (current_pack && !current_pack->extraDataLoaded)          request_load = true;      if (request_load) @@ -340,7 +345,7 @@ void ResourcePage::onResourceSelected()          return;      auto current_pack = getCurrentPack(); -    if (!current_pack->versionsLoaded) +    if (!current_pack || !current_pack->versionsLoaded)          return;      auto& version = current_pack->versions[m_selected_version_index]; @@ -386,7 +391,7 @@ void ResourcePage::openUrl(const QUrl& url)          const QString slug = match.captured(1);          // ensure the user isn't opening the same mod -        if (slug != getCurrentPack()->slug) { +        if (auto current_pack = getCurrentPack(); current_pack && slug != current_pack->slug) {              m_parent_dialog->selectPage(page);              auto newPage = m_parent_dialog->getSelectedPage(); | 
