diff --git a/clients/aurorae/src/aurorae.cpp b/clients/aurorae/src/aurorae.cpp index ac5d39a1dc..234203aa5a 100644 --- a/clients/aurorae/src/aurorae.cpp +++ b/clients/aurorae/src/aurorae.cpp @@ -277,6 +277,7 @@ void Decoration::init() { KDecoration2::Decoration::init(); auto s = settings(); + connect(s.data(), &KDecoration2::DecorationSettings::reconfigured, this, &Decoration::configChanged); // recreate scene when compositing gets disabled, TODO: remove with rendercontrol #if !HAVE_RENDER_CONTROL if (!m_recreateNonCompositedConnection) { @@ -713,46 +714,13 @@ void ConfigurationModule::init() uiFile.close(); layout()->addWidget(customConfigForm); // connect the ui file with the skeleton - m_configManager = new KConfigDialogManager(customConfigForm, m_skeleton); - m_configManager->updateWidgets(); - connect(m_configManager, &KConfigDialogManager::widgetModified, - this, static_cast(&KCModule::changed)); + addConfig(m_skeleton, customConfigForm); // send a custom event to the translator to retranslate using our translator QEvent le(QEvent::LanguageChange); QCoreApplication::sendEvent(customConfigForm, &le); } -void ConfigurationModule::defaults() -{ - if (m_configManager) { - m_configManager->updateWidgetsDefault(); - } - KCModule::defaults(); -} - -void ConfigurationModule::load() -{ - if (m_skeleton) { - m_skeleton->load(); - } - if (m_configManager) { - m_configManager->updateWidgets(); - } - KCModule::load(); -} - -void ConfigurationModule::save() -{ - if (m_configManager) { - m_configManager->updateSettings(); - } - if (m_skeleton) { - m_skeleton->save(); - } - KCModule::save(); -} - } #include "aurorae.moc" diff --git a/clients/aurorae/src/aurorae.h b/clients/aurorae/src/aurorae.h index 8daf677a9d..26296bf94c 100644 --- a/clients/aurorae/src/aurorae.h +++ b/clients/aurorae/src/aurorae.h @@ -34,7 +34,6 @@ class QQuickWindow; class QWindow; class KConfigLoader; -class KConfigDialogManager; namespace KWin { @@ -62,6 +61,9 @@ public Q_SLOTS: void init() override; void installTitleItem(QQuickItem *item); +Q_SIGNALS: + void configChanged(); + protected: void hoverEnterEvent(QHoverEvent *event) override; void hoverLeaveEvent(QHoverEvent *event) override; @@ -119,16 +121,10 @@ class ConfigurationModule : public KCModule public: ConfigurationModule(QWidget *parent, const QVariantList &args); -public Q_SLOTS: - void defaults() override; - void load() override; - void save() override; - private: void init(); QString m_theme; KConfigLoader *m_skeleton = nullptr; - KConfigDialogManager *m_configManager = nullptr; }; } diff --git a/clients/aurorae/themes/plastik/package/contents/ui/main.qml b/clients/aurorae/themes/plastik/package/contents/ui/main.qml index 269f37c58c..f42450eeb2 100644 --- a/clients/aurorae/themes/plastik/package/contents/ui/main.qml +++ b/clients/aurorae/themes/plastik/package/contents/ui/main.qml @@ -413,4 +413,8 @@ Decoration { maximizedBorders.setTitle(top.maximizedHeight); readConfig(); } + Connections { + target: decoration + onConfigChanged: root.readConfig() + } } diff --git a/decorations/settings.cpp b/decorations/settings.cpp index f4dacb8721..2273cc2070 100644 --- a/decorations/settings.cpp +++ b/decorations/settings.cpp @@ -180,6 +180,8 @@ void SettingsImpl::readSettings() m_borderSize = size; emit decorationSettings()->borderSizeChanged(m_borderSize); } + + emit decorationSettings()->reconfigured(); } } diff --git a/kcmkwin/kwindecoration/declarative-plugin/CMakeLists.txt b/kcmkwin/kwindecoration/declarative-plugin/CMakeLists.txt index 8dd728ea5c..7a01041a53 100644 --- a/kcmkwin/kwindecoration/declarative-plugin/CMakeLists.txt +++ b/kcmkwin/kwindecoration/declarative-plugin/CMakeLists.txt @@ -11,6 +11,7 @@ add_library(kdecorationprivatedeclarative SHARED ${plugin_SRCS}) target_link_libraries(kdecorationprivatedeclarative KDecoration2::KDecoration KDecoration2::KDecoration2Private + Qt5::DBus Qt5::Quick KF5::CoreAddons KF5::ConfigWidgets diff --git a/kcmkwin/kwindecoration/declarative-plugin/previewbridge.cpp b/kcmkwin/kwindecoration/declarative-plugin/previewbridge.cpp index 5aeae3c491..d6d1ef5c83 100644 --- a/kcmkwin/kwindecoration/declarative-plugin/previewbridge.cpp +++ b/kcmkwin/kwindecoration/declarative-plugin/previewbridge.cpp @@ -31,6 +31,8 @@ #include #include +#include +#include #include #include #include @@ -195,7 +197,18 @@ void PreviewBridge::configure() return; } - connect(&dialog, &QDialog::accepted, kcm, &KCModule::save); + auto save = [this,kcm] { + kcm->save(); + if (!m_lastCreatedSettings) { + } + emit m_lastCreatedSettings->decorationSettings()->reconfigured(); + // Send signal to all kwin instances + QDBusMessage message = QDBusMessage::createSignal(QStringLiteral("/KWin"), + QStringLiteral("org.kde.KWin"), + QStringLiteral("reloadConfig")); + QDBusConnection::sessionBus().send(message); + }; + connect(&dialog, &QDialog::accepted, this, save); QDialogButtonBox *buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel | @@ -211,7 +224,7 @@ void PreviewBridge::configure() // Here we connect our buttons with the dialog connect(buttons, &QDialogButtonBox::accepted, &dialog, &QDialog::accept); connect(buttons, &QDialogButtonBox::rejected, &dialog, &QDialog::reject); - connect(apply, &QPushButton::clicked, kcm, &KCModule::save); + connect(apply, &QPushButton::clicked, this, save); connect(reset, &QPushButton::clicked, kcm, &KCModule::load); auto changedSignal = static_cast(&KCModule::changed); connect(kcm, changedSignal, apply, &QPushButton::setEnabled);