From 4202fbdeca991f1fb043ecdecbc00f67b24e8e2e Mon Sep 17 00:00:00 2001 From: Nicolas Fella Date: Thu, 19 Oct 2023 00:58:15 +0200 Subject: [PATCH] Process correct model when applying service menu changes The listview's model is a filter model, we must iterate through the source, otherwise we get incorrect results BUG: 475547 (cherry picked from commit ef59e42c40df5e873a1a1b6c2173d5b55641a783) --- .../contextmenu/contextmenusettingspage.cpp | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/settings/contextmenu/contextmenusettingspage.cpp b/src/settings/contextmenu/contextmenusettingspage.cpp index 03e55ba327..fe417ef289 100644 --- a/src/settings/contextmenu/contextmenusettingspage.cpp +++ b/src/settings/contextmenu/contextmenusettingspage.cpp @@ -173,15 +173,14 @@ void ContextMenuSettingsPage::applySettings() QStringList enabledPlugins; - const QAbstractItemModel *model = m_listView->model(); - for (int i = 0; i < model->rowCount(); ++i) { - const QModelIndex index = model->index(i, 0); - const QString service = model->data(index, ServiceModel::DesktopEntryNameRole).toString(); - const bool checked = model->data(index, Qt::CheckStateRole).toBool(); + for (int i = 0; i < m_serviceModel->rowCount(); ++i) { + const QModelIndex index = m_serviceModel->index(i, 0); + const QString service = m_serviceModel->data(index, ServiceModel::DesktopEntryNameRole).toString(); + const bool checked = m_serviceModel->data(index, Qt::CheckStateRole).toBool(); if (service.startsWith(VersionControlServicePrefix)) { if (checked) { - enabledPlugins.append(model->data(index, Qt::DisplayRole).toString()); + enabledPlugins.append(m_serviceModel->data(index, Qt::DisplayRole).toString()); } } else if (service == QLatin1String(DeleteService)) { KSharedConfig::Ptr globalConfig = KSharedConfig::openConfig(QStringLiteral("kdeglobals"), KConfig::NoGlobals); @@ -235,14 +234,13 @@ void ContextMenuSettingsPage::applySettings() void ContextMenuSettingsPage::restoreDefaults() { - QAbstractItemModel *model = m_listView->model(); - for (int i = 0; i < model->rowCount(); ++i) { - const QModelIndex index = model->index(i, 0); - const QString service = model->data(index, ServiceModel::DesktopEntryNameRole).toString(); + for (int i = 0; i < m_serviceModel->rowCount(); ++i) { + const QModelIndex index = m_serviceModel->index(i, 0); + const QString service = m_serviceModel->data(index, ServiceModel::DesktopEntryNameRole).toString(); const bool checked = !service.startsWith(VersionControlServicePrefix) && service != QLatin1String(DeleteService) && service != QLatin1String(CopyToMoveToService); - model->setData(index, checked, Qt::CheckStateRole); + m_serviceModel->setData(index, checked, Qt::CheckStateRole); } }