diff --git a/decorations.cpp b/decorations.cpp index f2254147cb..217c7bfb78 100644 --- a/decorations.cpp +++ b/decorations.cpp @@ -33,8 +33,9 @@ namespace KWin KWIN_SINGLETON_FACTORY(DecorationPlugin) -DecorationPlugin::DecorationPlugin(QObject *) - : KDecorationPlugins(KGlobal::config()) +DecorationPlugin::DecorationPlugin(QObject *parent) + : QObject(parent) + , KDecorationPlugins(KGlobal::config()) , m_disabled(false) { defaultPlugin = "kwin3_oxygen"; @@ -145,4 +146,12 @@ QList< int > DecorationPlugin::supportedColors() const return ret; } +void DecorationPlugin::resetCompositing() +{ + if (m_disabled) { + return; + } + factory()->reset(SettingCompositing); +} + } // namespace diff --git a/decorations.h b/decorations.h index aeaa8f1104..1e8faaae7e 100644 --- a/decorations.h +++ b/decorations.h @@ -29,8 +29,9 @@ namespace KWin { class DecorationPlugin - : public KDecorationPlugins + : public QObject, public KDecorationPlugins { + Q_OBJECT public: virtual ~DecorationPlugin(); virtual bool provides(Requirement); @@ -53,6 +54,9 @@ public: * @todo: remove KDE5 **/ QList supportedColors() const; + +public Q_SLOTS: + void resetCompositing(); protected: virtual void error(const QString& error_msg); private: diff --git a/workspace.cpp b/workspace.cpp index 96d76500af..50338ba6c8 100644 --- a/workspace.cpp +++ b/workspace.cpp @@ -208,7 +208,7 @@ Workspace::Workspace(bool restore) m_compositor = Compositor::create(this); connect(this, SIGNAL(currentDesktopChanged(int,KWin::Client*)), m_compositor, SLOT(addRepaintFull())); - connect(m_compositor, SIGNAL(compositingToggled(bool)), SLOT(slotCompositingToggled())); + connect(m_compositor, SIGNAL(compositingToggled(bool)), decorationPlugin(), SLOT(resetCompositing())); new DBusInterface(this); @@ -537,7 +537,6 @@ Workspace::~Workspace() delete rootInfo; delete supportWindow; - delete decorationPlugin(); delete startup; delete Placement::self(); delete client_keys_dialog; @@ -1811,15 +1810,6 @@ QString Workspace::supportInformation() const return support; } -void Workspace::slotCompositingToggled() -{ - // notify decorations that composition state has changed - DecorationPlugin *deco = DecorationPlugin::self(); - if (!deco->isDisabled()) { - deco->factory()->reset(SettingCompositing); - } -} - void Workspace::slotToggleCompositing() { if (m_compositor) { diff --git a/workspace.h b/workspace.h index 2fd18ed404..00e9395b1c 100644 --- a/workspace.h +++ b/workspace.h @@ -402,7 +402,6 @@ public slots: void reconfigure(); void slotReconfigure(); - void slotCompositingToggled(); void slotKillWindow();