diff --git a/kcms/fonts/fonts.h b/kcms/fonts/fonts.h --- a/kcms/fonts/fonts.h +++ b/kcms/fonts/fonts.h @@ -31,7 +31,7 @@ #include #include -#include +#include #include "kxftconfig.h" @@ -134,7 +134,7 @@ /** * The Desktop/fonts tab in kcontrol. */ -class KFonts : public KQuickAddons::ConfigModule +class KFonts : public KQuickAddons::ManagedConfigModule { Q_OBJECT Q_PROPERTY(FontsSettings *fontsSettings READ fontsSettings CONSTANT) @@ -158,7 +158,7 @@ void fontsHaveChanged(); private: - void updateNeedsSave(); + bool isSaveNeeded() const override ; QFont applyFontDiff(const QFont &fnt, const QFont &newFont, int fontDiffFlags); void setNearestExistingFonts(); diff --git a/kcms/fonts/fonts.cpp b/kcms/fonts/fonts.cpp --- a/kcms/fonts/fonts.cpp +++ b/kcms/fonts/fonts.cpp @@ -497,7 +497,7 @@ /**** KFonts ****/ KFonts::KFonts(QObject *parent, const QVariantList &args) - : KQuickAddons::ConfigModule(parent, args) + : KQuickAddons::ManagedConfigModule(parent, args) , m_settings(new FontsSettings(this)) , m_fontAASettings(new FontAASettings(this)) { @@ -514,14 +514,6 @@ setNeedsSave(m_fontAASettings->needsSave()); }; - connect(m_settings, &FontsSettings::configChanged, this, &KFonts::updateNeedsSave); - connect(m_settings, &FontsSettings::fontChanged, this, &KFonts::updateNeedsSave); - connect(m_settings, &FontsSettings::fixedChanged, this, &KFonts::updateNeedsSave); - connect(m_settings, &FontsSettings::smallestReadableFontChanged, this, &KFonts::updateNeedsSave); - connect(m_settings, &FontsSettings::toolBarFontChanged, this, &KFonts::updateNeedsSave); - connect(m_settings, &FontsSettings::menuFontChanged, this, &KFonts::updateNeedsSave); - connect(m_settings, &FontsSettings::activeFontChanged, this, &KFonts::updateNeedsSave); - connect(m_fontAASettings, &FontAASettings::subPixelCurrentIndexChanged, this, updateState); connect(m_fontAASettings, &FontAASettings::hintingCurrentIndexChanged, this, updateState); connect(m_fontAASettings, &FontAASettings::excludeChanged, this, updateState); @@ -543,7 +535,7 @@ void KFonts::defaults() { - m_settings->setDefaults(); + ManagedConfigModule::defaults(); m_fontAASettings->defaults(); } @@ -560,7 +552,7 @@ void KFonts::load() { // first load all the settings - m_settings->load(); + ManagedConfigModule::load(); m_fontAASettings->load(); // Then set the existing fonts based on those settings @@ -572,12 +564,13 @@ // previews engine()->addImageProvider("preview", new PreviewImageProvider(m_settings->font())); - setNeedsSave(false); + // reload state after loading by emiting a settings signal + emit m_settings->activeFontChanged(); } void KFonts::save() { - m_settings->save(); + ManagedConfigModule::save(); KConfig _cfgfonts("kcmfonts"); KConfigGroup cfgfonts(&_cfgfonts, "General"); @@ -601,12 +594,11 @@ runRdb(KRdbExportXftSettings | KRdbExportGtkTheme); emit fontsHaveChanged(); - setNeedsSave(false); } -void KFonts::updateNeedsSave() +bool KFonts::isSaveNeeded() const { - setNeedsSave(m_settings->isSaveNeeded() || m_fontAASettings->needsSave()); + return m_fontAASettings->needsSave(); } void KFonts::adjustAllFonts()