diff --git a/kcmkwin/kwincompositing/main.cpp b/kcmkwin/kwincompositing/main.cpp index 58ed0f313e..ecf1db0055 100644 --- a/kcmkwin/kwincompositing/main.cpp +++ b/kcmkwin/kwincompositing/main.cpp @@ -38,6 +38,7 @@ public: public Q_SLOTS: void save() override; + void load() override; private: QScopedPointer m_view; @@ -73,6 +74,12 @@ void KWinCompositingKCM::save() KCModule::save(); } +void KWinCompositingKCM::load() +{ + m_view->load(); + KCModule::load(); +} + K_PLUGIN_FACTORY(KWinCompositingConfigFactory, registerPlugin(); ) diff --git a/kcmkwin/kwincompositing/model.cpp b/kcmkwin/kwincompositing/model.cpp index df0ac1be64..48e88e639b 100644 --- a/kcmkwin/kwincompositing/model.cpp +++ b/kcmkwin/kwincompositing/model.cpp @@ -162,6 +162,8 @@ void EffectModel::loadEffects() KConfigGroup kwinConfig(KSharedConfig::openConfig("kwinrc"), "Plugins"); beginResetModel(); + m_effectsChanged.clear(); + m_effectsList.clear(); KService::List offers = KServiceTypeTrader::self()->query("KWin/Effect"); for(KService::Ptr service : offers) { const QString effectPluginPath = QStandardPaths::locate(QStandardPaths::GenericDataLocation, "kde5/services/"+ service->entryPath(), QStandardPaths::LocateFile); @@ -356,6 +358,11 @@ void EffectFilterModel::enableWidnowManagement(bool enabled) m_effectModel->enableWidnowManagement(enabled); } +void EffectFilterModel::load() +{ + m_effectModel->loadEffects(); +} + EffectView::EffectView(QWindow *parent) : QQuickView(parent) { @@ -385,5 +392,15 @@ void EffectView::save() } } +void EffectView::load() +{ + if (auto *model = rootObject()->findChild(QStringLiteral("filterModel"))) { + model->load(); + } + if (auto *compositing = rootObject()->findChild(QStringLiteral("compositing"))) { + compositing->reset(); + } +} + }//end namespace Compositing }//end namespace KWin diff --git a/kcmkwin/kwincompositing/model.h b/kcmkwin/kwincompositing/model.h index 8d207ac110..82ee0a196d 100644 --- a/kcmkwin/kwincompositing/model.h +++ b/kcmkwin/kwincompositing/model.h @@ -81,9 +81,9 @@ public: void syncEffectsToKWin(); void syncConfig(); void enableWidnowManagement(bool enabled); + void loadEffects(); private: - void loadEffects(); void handleDesktopSwitching(int row); void handleWindowManagement(int row, bool enabled); int findRowByServiceName(const QString &serviceName); @@ -103,6 +103,7 @@ public: Q_INVOKABLE QColor backgroundViewColor() { return KColorScheme(QPalette::Active, KColorScheme::Window, KSharedConfigPtr(0)).background(KColorScheme::NormalBackground).color(); }; void save(); + void load(); Q_SIGNALS: void changed(); @@ -130,6 +131,8 @@ public: QColor backgroundNormalColor() { return KColorScheme(QPalette::Active, KColorScheme::View, KSharedConfigPtr(0)).background(KColorScheme::NormalBackground).color(); }; QColor backgroundAlternateColor() { return KColorScheme(QPalette::Active, KColorScheme::View, KSharedConfigPtr(0)).background(KColorScheme::AlternateBackground).color(); }; + void load(); + public Q_SLOTS: void setFilter(const QString &filter);