diff --git a/kcms/desktoptheme/kcm.h b/kcms/desktoptheme/kcm.h --- a/kcms/desktoptheme/kcm.h +++ b/kcms/desktoptheme/kcm.h @@ -3,6 +3,7 @@ Copyright (c) 2014 Vishesh Handa Copyright (c) 2016 David Rosca Copyright (c) 2018 Kai Uwe Broulik + Copyright (c) 2019 Kevin Ottens This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -104,7 +105,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 @@ -3,6 +3,7 @@ Copyright (c) 2014 Vishesh Handa Copyright (c) 2016 David Rosca Copyright (c) 2018 Kai Uwe Broulik + Copyright (c) 2019 Kevin Ottens This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -49,7 +50,6 @@ KCMDesktopTheme::KCMDesktopTheme(QObject *parent, const QVariantList &args) : KQuickAddons::ConfigModule(parent, args) - , m_defaultTheme(new Plasma::Theme(this)) , m_haveThemeExplorerInstalled(false) { qmlRegisterType(); @@ -74,7 +74,6 @@ KCMDesktopTheme::~KCMDesktopTheme() { - delete m_defaultTheme; } QStandardItemModel *KCMDesktopTheme::desktopThemeModel() const @@ -282,17 +281,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 +325,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()