From 8f0f41f08cbb97b52e9bb5696aa4599b8c779460 Mon Sep 17 00:00:00 2001 From: LostDragonist Date: Thu, 21 Feb 2019 21:36:09 -0600 Subject: Invalidate mod list sort proxy when mods find updates --- src/mainwindow.cpp | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) (limited to 'src/mainwindow.cpp') diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 26853a36..a946bba4 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -2333,9 +2333,8 @@ void MainWindow::modorder_changed() m_OrganizerCore.modList()->setOverwriteMarkers(modInfo->getModOverwrite(), modInfo->getModOverwritten()); m_OrganizerCore.modList()->setArchiveOverwriteMarkers(modInfo->getModArchiveOverwrite(), modInfo->getModArchiveOverwritten()); m_OrganizerCore.modList()->setArchiveLooseOverwriteMarkers(modInfo->getModArchiveLooseOverwrite(), modInfo->getModArchiveLooseOverwritten()); - if (m_ModListSortProxy != nullptr) { + if (m_ModListSortProxy != nullptr) m_ModListSortProxy->invalidate(); - } ui->modList->verticalScrollBar()->repaint(); } } @@ -2582,10 +2581,6 @@ void MainWindow::modlistSelectionChanged(const QModelIndex ¤t, const QMode m_OrganizerCore.modList()->setArchiveOverwriteMarkers(std::set(), std::set()); m_OrganizerCore.modList()->setArchiveLooseOverwriteMarkers(std::set(), std::set()); } -/* if ((m_ModListSortProxy != nullptr) - && !m_ModListSortProxy->beingInvalidated()) { - m_ModListSortProxy->invalidate(); - }*/ ui->modList->verticalScrollBar()->repaint(); } @@ -4060,9 +4055,8 @@ void MainWindow::ignoreUpdate() { ModInfo::Ptr info = ModInfo::getByIndex(m_ContextRow); info->ignoreUpdate(true); } - if (m_ModListSortProxy != nullptr) { + if (m_ModListSortProxy != nullptr) m_ModListSortProxy->invalidate(); - } } void MainWindow::checkModUpdates_clicked() @@ -4094,9 +4088,8 @@ void MainWindow::unignoreUpdate() ModInfo::Ptr info = ModInfo::getByIndex(m_ContextRow); info->ignoreUpdate(false); } - if (m_ModListSortProxy != nullptr) { + if (m_ModListSortProxy != nullptr) m_ModListSortProxy->invalidate(); - } } void MainWindow::addPrimaryCategoryCandidates(QMenu *primaryCategoryMenu, @@ -5565,6 +5558,8 @@ void MainWindow::nxmUpdateInfoAvailable(QString gameName, QVariant userData, QVa return ModInfo::filteredMods(gameNameReal, resultList, userData.toBool(), true); }); watcher->setFuture(future); + if (m_ModListSortProxy != nullptr) + m_ModListSortProxy->invalidate(); } void MainWindow::finishUpdateInfo() @@ -5664,6 +5659,8 @@ void MainWindow::nxmUpdatesAvailable(QString gameName, int modID, QVariant userD if (foundUpdate) { // Just get the standard data updates for endorsements and descriptions mod->setLastNexusUpdate(QDateTime::currentDateTimeUtc()); + if (m_ModListSortProxy != nullptr) + m_ModListSortProxy->invalidate(); } else { // Scrape mod data here so we can use the mod version if no file update was located requiresInfo = true; @@ -5677,6 +5674,7 @@ void MainWindow::nxmUpdatesAvailable(QString gameName, int modID, QVariant userD void MainWindow::nxmModInfoAvailable(QString gameName, int modID, QVariant userData, QVariant resultData, int requestID) { QVariantMap result = resultData.toMap(); + bool foundUpdate = false; QString gameNameReal; for (IPluginGame *game : m_PluginContainer.plugins()) { if (game->gameNexusName() == gameName) { @@ -5691,6 +5689,7 @@ void MainWindow::nxmModInfoAvailable(QString gameName, int modID, QVariant userD if (now >= updateTarget) { mod->setNewestVersion(result["version"].toString()); mod->setLastNexusUpdate(QDateTime::currentDateTimeUtc()); + foundUpdate = true; } mod->setNexusDescription(result["description"].toString()); if ((mod->endorsedState() != ModInfo::ENDORSED_NEVER) && (result.contains("endorsement"))) { @@ -5707,6 +5706,8 @@ void MainWindow::nxmModInfoAvailable(QString gameName, int modID, QVariant userD mod->setNexusLastModified(QDateTime::fromSecsSinceEpoch(result["updated_timestamp"].toInt(), Qt::UTC)); mod->saveMeta(); } + if (foundUpdate && m_ModListSortProxy != nullptr) + m_ModListSortProxy->invalidate(); } void MainWindow::nxmEndorsementToggled(QString, int, QVariant, QVariant resultData, int) -- cgit v1.3.1