diff --git a/kcms/colors/colors.h b/kcms/colors/colors.h --- a/kcms/colors/colors.h +++ b/kcms/colors/colors.h @@ -92,6 +92,8 @@ void showSchemeNotInstalledWarning(const QString &schemeName); private: + bool isSaveNeeded() const override; + void saveColors(); void processPendingDeletions(); diff --git a/kcms/colors/colors.cpp b/kcms/colors/colors.cpp --- a/kcms/colors/colors.cpp +++ b/kcms/colors/colors.cpp @@ -74,9 +74,7 @@ about->addAuthor(i18n("Kai Uwe Broulik"), QString(), QStringLiteral("kde@privat.broulik.de")); setAboutData(about); - connect(m_model, &ColorsModel::pendingDeletionsChanged, this, [this] { - setNeedsSave(true); - }); + connect(m_model, &ColorsModel::pendingDeletionsChanged, this, &KCMColors::settingsChanged); connect(m_model, &ColorsModel::selectedSchemeChanged, this, [this](const QString &scheme) { m_selectedSchemeDirty = true; @@ -303,6 +301,12 @@ m_editDialogProcess->start(QStringLiteral("kcolorschemeeditor"), args); } +bool KCMColors::isSaveNeeded() const +{ + return !m_model->match(m_model->index(0, 0), ColorsModel::PendingDeletionRole, true).isEmpty(); +} + + void KCMColors::load() { ManagedConfigModule::load(); diff --git a/kcms/colors/colorsmodel.cpp b/kcms/colors/colorsmodel.cpp --- a/kcms/colors/colorsmodel.cpp +++ b/kcms/colors/colorsmodel.cpp @@ -123,12 +123,9 @@ return; } - const bool firstTime = m_selectedScheme.isNull(); m_selectedScheme = scheme; - if (!firstTime) { - emit selectedSchemeChanged(scheme); - } + emit selectedSchemeChanged(scheme); emit selectedSchemeIndexChanged(); } diff --git a/kcms/colors/filterproxymodel.cpp b/kcms/colors/filterproxymodel.cpp --- a/kcms/colors/filterproxymodel.cpp +++ b/kcms/colors/filterproxymodel.cpp @@ -40,12 +40,9 @@ return; } - const bool firstTime = m_selectedScheme.isNull(); m_selectedScheme = scheme; - if (!firstTime) { - emit selectedSchemeChanged(); - } + emit selectedSchemeChanged(); emit selectedSchemeIndexChanged(); }