diff --git a/kcms/desktoptheme/kcm.h b/kcms/desktoptheme/kcm.h --- a/kcms/desktoptheme/kcm.h +++ b/kcms/desktoptheme/kcm.h @@ -104,7 +104,6 @@ QStandardItemModel *m_model; QString m_selectedPlugin; QStringList m_pendingRemoval; - Plasma::Theme *m_defaultTheme; QHash m_themes; bool m_haveThemeExplorerInstalled; diff --git a/kcms/desktoptheme/kcm.cpp b/kcms/desktoptheme/kcm.cpp --- a/kcms/desktoptheme/kcm.cpp +++ b/kcms/desktoptheme/kcm.cpp @@ -49,7 +49,6 @@ KCMDesktopTheme::KCMDesktopTheme(QObject *parent, const QVariantList &args) : KQuickAddons::ConfigModule(parent, args) - , m_defaultTheme(new Plasma::Theme(this)) , m_haveThemeExplorerInstalled(false) { qmlRegisterType(); @@ -74,7 +73,6 @@ KCMDesktopTheme::~KCMDesktopTheme() { - delete m_defaultTheme; } QStandardItemModel *KCMDesktopTheme::desktopThemeModel() const @@ -282,17 +280,21 @@ m_model->sort(0 /*column*/); KConfigGroup cg(KSharedConfig::openConfig(QStringLiteral("plasmarc")), "Theme"); - setSelectedPlugin(cg.readEntry("name", m_defaultTheme->themeName())); + setSelectedPlugin(cg.readEntry("name", QStringLiteral("default"))); emit selectedPluginIndexChanged(); updateNeedsSave(); } void KCMDesktopTheme::save() { - if (m_defaultTheme->themeName() != m_selectedPlugin) { - m_defaultTheme->setThemeName(m_selectedPlugin); + KConfigGroup cg(KSharedConfig::openConfig(QStringLiteral("plasmarc")), "Theme"); + const auto currentTheme = cg.readEntry("name", QStringLiteral("default")); + if (currentTheme != m_selectedPlugin) { + cg.writeEntry("name", m_selectedPlugin); + cg.sync(); + Plasma::Theme().setThemeName(m_selectedPlugin); } processPendingDeletions(); @@ -322,8 +324,10 @@ void KCMDesktopTheme::updateNeedsSave() { + KConfigGroup cg(KSharedConfig::openConfig(QStringLiteral("plasmarc")), "Theme"); + const auto currentTheme = cg.readEntry("name", QStringLiteral("default")); setNeedsSave(!m_model->match(m_model->index(0, 0), PendingDeletionRole, true).isEmpty() - || m_selectedPlugin != m_defaultTheme->themeName()); + || m_selectedPlugin != currentTheme); } void KCMDesktopTheme::processPendingDeletions()