From 20fcb774f1bdef60b45d242c6fd8c0814ad761ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= Date: Sat, 24 May 2014 14:04:59 +0200 Subject: [PATCH] [kcmkwin/desktop] Fix activating the desktop effects We need to load/unload the changed effects. BUG: 335270 REVIEW: 118292 --- kcmkwin/kwindesktop/CMakeLists.txt | 2 ++ kcmkwin/kwindesktop/main.cpp | 45 ++++++++++++++++++++---------- 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/kcmkwin/kwindesktop/CMakeLists.txt b/kcmkwin/kwindesktop/CMakeLists.txt index 50f87c1c8a..06ebd993b1 100644 --- a/kcmkwin/kwindesktop/CMakeLists.txt +++ b/kcmkwin/kwindesktop/CMakeLists.txt @@ -7,6 +7,8 @@ include_directories(${KWIN_SOURCE_DIR}/effects) set(kcm_kwindesktop_PART_SRCS main.cpp desktopnameswidget.cpp) ki18n_wrap_ui(kcm_kwindesktop_PART_SRCS main.ui) +qt5_add_dbus_interface( kcm_kwindesktop_PART_SRCS + ${KWIN_SOURCE_DIR}/org.kde.kwin.Effects.xml kwin_effects_interface) add_library(kcm_kwindesktop MODULE ${kcm_kwindesktop_PART_SRCS}) diff --git a/kcmkwin/kwindesktop/main.cpp b/kcmkwin/kwindesktop/main.cpp index c343dce9d7..936dad1b06 100644 --- a/kcmkwin/kwindesktop/main.cpp +++ b/kcmkwin/kwindesktop/main.cpp @@ -21,6 +21,7 @@ along with this program. If not, see . #include "main.h" #include #include +#include #include #include @@ -336,39 +337,53 @@ void KWinDesktopConfig::save() // Effect desktop switching int desktopSwitcher = m_ui->effectComboBox->currentIndex(); + bool slideEnabled = false; + bool cubeSlideEnabled = false; + bool fadeEnabled = false; switch(desktopSwitcher) { - case 0: - // no effect - effectconfig.writeEntry("slideEnabled", false); - effectconfig.writeEntry("cubeslideEnabled", false); - effectconfig.writeEntry("kwin4_effect_fadedesktopEnabled", false); - break; case 1: // slide - effectconfig.writeEntry("slideEnabled", true); - effectconfig.writeEntry("cubeslideEnabled", false); - effectconfig.writeEntry("kwin4_effect_fadedesktopEnabled", false); + slideEnabled = true; break; case 2: // cube - effectconfig.writeEntry("slideEnabled", false); - effectconfig.writeEntry("cubeslideEnabled", true); - effectconfig.writeEntry("kwin4_effect_fadedesktopEnabled", false); + cubeSlideEnabled = true; break; case 3: // fadedesktop - effectconfig.writeEntry("slideEnabled", false); - effectconfig.writeEntry("cubeslideEnabled", false); - effectconfig.writeEntry("kwin4_effect_fadedesktopEnabled", true); + fadeEnabled = true; break; } + effectconfig.writeEntry("slideEnabled", slideEnabled); + effectconfig.writeEntry("cubeslideEnabled", cubeSlideEnabled); + effectconfig.writeEntry("kwin4_effect_fadedesktopEnabled", fadeEnabled); + m_editor->save(); m_config->sync(); // Send signal to all kwin instances QDBusMessage message = QDBusMessage::createSignal("/KWin", "org.kde.KWin", "reloadConfig"); QDBusConnection::sessionBus().send(message); + // and reconfigure the effects + OrgKdeKwinEffectsInterface interface(QStringLiteral("org.kde.KWin"), + QStringLiteral("/Effects"), + QDBusConnection::sessionBus()); + if (slideEnabled) { + interface.loadEffect(BuiltInEffects::nameForEffect(BuiltInEffect::Slide)); + } else { + interface.unloadEffect(BuiltInEffects::nameForEffect(BuiltInEffect::Slide)); + } + if (cubeSlideEnabled) { + interface.loadEffect(BuiltInEffects::nameForEffect(BuiltInEffect::CubeSlide)); + } else { + interface.unloadEffect(BuiltInEffects::nameForEffect(BuiltInEffect::CubeSlide)); + } + if (fadeEnabled) { + interface.loadEffect(QStringLiteral("kwin4_effect_fadedesktop")); + } else { + interface.unloadEffect(QStringLiteral("kwin4_effect_fadedesktop")); + } emit changed(false); }