diff --git a/kcms/style/gtkpage.cpp b/kcms/style/gtkpage.cpp index 4f96836f2..155d236ab 100644 --- a/kcms/style/gtkpage.cpp +++ b/kcms/style/gtkpage.cpp @@ -31,12 +31,6 @@ GtkPage::GtkPage(QObject *parent) GtkPage::~GtkPage() = default; -QString GtkPage::gtkThemeFromConfig() -{ - // FIXME make aysnc but that requires some refactoring on the UI side - return m_gtkConfigInterface.gtkTheme().value(); -} - bool GtkPage::gtkPreviewAvailable() { return !QStandardPaths::findExecutable(QStringLiteral("gtk3_preview"), {CMAKE_INSTALL_FULL_LIBEXECDIR}).isEmpty(); @@ -94,17 +88,21 @@ void GtkPage::save() void GtkPage::defaults() { - Q_EMIT selectGtkThemeInCombobox(QStringLiteral("Breeze")); + m_gtkThemesModel->setSelectedTheme(QStringLiteral("Breeze")); } void GtkPage::load() { m_gtkThemesModel->load(); m_gtkThemesModel->setSelectedTheme(m_gtkConfigInterface.gtkTheme()); - Q_EMIT selectGtkThemeInCombobox(gtkThemeFromConfig()); } bool GtkPage::isDefaults() const { return m_gtkThemesModel->selectedTheme() == QLatin1String("Breeze"); } + +bool GtkPage::isSaveNeeded() +{ + return m_gtkThemesModel->selectedTheme() != m_gtkConfigInterface.gtkTheme(); +} diff --git a/kcms/style/gtkpage.h b/kcms/style/gtkpage.h index efcdd7259..1e9c29502 100644 --- a/kcms/style/gtkpage.h +++ b/kcms/style/gtkpage.h @@ -27,10 +27,9 @@ public: void save(); void defaults(); bool isDefaults() const; + bool isSaveNeeded(); public Q_SLOTS: - QString gtkThemeFromConfig(); - bool gtkPreviewAvailable(); void showGtkPreview(); @@ -43,7 +42,6 @@ Q_SIGNALS: void gtkThemesModelChanged(GtkThemesModel *model); void showErrorMessage(const QString &message); - void selectGtkThemeInCombobox(const QString &themeName); void gtkThemeSettingsChanged(); diff --git a/kcms/style/gtkthemesmodel.cpp b/kcms/style/gtkthemesmodel.cpp index cc8ec389e..b8face2d9 100644 --- a/kcms/style/gtkthemesmodel.cpp +++ b/kcms/style/gtkthemesmodel.cpp @@ -103,6 +103,7 @@ QMap GtkThemesModel::themesList() void GtkThemesModel::setSelectedTheme(const QString &themeName) { m_selectedTheme = themeName; + Q_EMIT selectedThemeChanged(themeName); } QString GtkThemesModel::selectedTheme() diff --git a/kcms/style/kcmstyle.cpp b/kcms/style/kcmstyle.cpp index 9af4b64f3..3581886ee 100644 --- a/kcms/style/kcmstyle.cpp +++ b/kcms/style/kcmstyle.cpp @@ -90,7 +90,6 @@ KCMStyle::KCMStyle(QObject *parent, const KPluginMetaData &data, const QVariantL m_gtkPage = new GtkPage(this); connect(m_gtkPage, &GtkPage::gtkThemeSettingsChanged, this, [this]() { settingsChanged(); - setNeedsSave(true); }); } @@ -338,4 +337,9 @@ bool KCMStyle::isDefaults() const return m_gtkPage->isDefaults(); } +bool KCMStyle::isSaveNeeded() const +{ + return m_gtkPage->isSaveNeeded(); +} + #include "kcmstyle.moc" diff --git a/kcms/style/kcmstyle.h b/kcms/style/kcmstyle.h index 05ed04071..8224a4c66 100644 --- a/kcms/style/kcmstyle.h +++ b/kcms/style/kcmstyle.h @@ -76,6 +76,7 @@ public: void defaults() override; bool isDefaults() const override; + bool isSaveNeeded() const override; Q_SIGNALS: void showErrorMessage(const QString &message); diff --git a/kcms/style/package/contents/ui/GtkStylePage.qml b/kcms/style/package/contents/ui/GtkStylePage.qml index 4ea61ad3a..7d100880d 100644 --- a/kcms/style/package/contents/ui/GtkStylePage.qml +++ b/kcms/style/package/contents/ui/GtkStylePage.qml @@ -49,20 +49,13 @@ Kirigami.Page { QtControls.ComboBox { id: gtkThemeCombo model: kcm.gtkPage.gtkThemesModel - currentIndex: model.findThemeIndex(kcm.gtkPage.gtkThemeFromConfig()) + currentIndex: model.findThemeIndex(kcm.gtkPage.gtkThemesModel.selectedTheme) onCurrentTextChanged: function() { model.selectedTheme = currentText gtkRemoveButton.enabled = model.selectedThemeRemovable() } onActivated: model.setSelectedThemeDirty() textRole: "theme-name" - - Connections { - target: kcm.gtkPage - function onSelectGtkThemeInCombobox(themeName) { - gtkThemeCombo.currentIndex = gtkThemeCombo.model.findThemeIndex(themeName) - } - } } QtControls.Button {