From 54eea09a9e3d741ccd024ca00b81ee05590a8834 Mon Sep 17 00:00:00 2001 From: Alexei Kotov Date: Thu, 15 May 2025 21:01:14 +0300 Subject: [PATCH] Fix out-of-bounds index dataChanged calls --- components/contentselector/model/contentmodel.cpp | 8 ++++---- components/contentselector/model/contentmodel.hpp | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/components/contentselector/model/contentmodel.cpp b/components/contentselector/model/contentmodel.cpp index 5f0d41d38c..06fed147c6 100644 --- a/components/contentselector/model/contentmodel.cpp +++ b/components/contentselector/model/contentmodel.cpp @@ -726,7 +726,7 @@ void ContentSelectorModel::ContentModel::setContentList(const QStringList& fileL } } } - emit dataChanged(index(0, 0), index(rowCount(), columnCount())); + refreshModel(); } QList ContentSelectorModel::ContentModel::checkForLoadOrderErrors( @@ -790,9 +790,9 @@ QString ContentSelectorModel::ContentModel::toolTip(const EsmFile* file) const } } -void ContentSelectorModel::ContentModel::refreshModel() +void ContentSelectorModel::ContentModel::refreshModel(std::initializer_list roles) { - emit dataChanged(index(0, 0), index(rowCount() - 1, 0)); + emit dataChanged(index(0, 0), index(rowCount() - 1, 0), roles); } bool ContentSelectorModel::ContentModel::setCheckState(const QString& filepath, bool checkState) @@ -878,5 +878,5 @@ ContentSelectorModel::ContentFileList ContentSelectorModel::ContentModel::checke void ContentSelectorModel::ContentModel::uncheckAll() { mCheckedFiles.clear(); - emit dataChanged(index(0, 0), index(rowCount(), columnCount()), { Qt::CheckStateRole, Qt::UserRole + 1 }); + refreshModel({ Qt::CheckStateRole, Qt::UserRole + 1 }); } diff --git a/components/contentselector/model/contentmodel.hpp b/components/contentselector/model/contentmodel.hpp index 3eba939125..492168d66c 100644 --- a/components/contentselector/model/contentmodel.hpp +++ b/components/contentselector/model/contentmodel.hpp @@ -67,7 +67,7 @@ namespace ContentSelectorModel ContentFileList checkedItems() const; void uncheckAll(); - void refreshModel(); + void refreshModel(std::initializer_list roles = {}); private: void addFile(EsmFile* file);