[kcmkwin/desktop] Fix activating the desktop effects
We need to load/unload the changed effects. BUG: 335270 REVIEW: 118292
This commit is contained in:
parent
ae1d18779c
commit
20fcb774f1
2 changed files with 32 additions and 15 deletions
|
@ -7,6 +7,8 @@ include_directories(${KWIN_SOURCE_DIR}/effects)
|
||||||
|
|
||||||
set(kcm_kwindesktop_PART_SRCS main.cpp desktopnameswidget.cpp)
|
set(kcm_kwindesktop_PART_SRCS main.cpp desktopnameswidget.cpp)
|
||||||
ki18n_wrap_ui(kcm_kwindesktop_PART_SRCS main.ui)
|
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})
|
add_library(kcm_kwindesktop MODULE ${kcm_kwindesktop_PART_SRCS})
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include <effect_builtins.h>
|
#include <effect_builtins.h>
|
||||||
#include <config-kwin.h>
|
#include <config-kwin.h>
|
||||||
|
#include <kwin_effects_interface.h>
|
||||||
|
|
||||||
#include <QDBusMessage>
|
#include <QDBusMessage>
|
||||||
#include <QDBusConnection>
|
#include <QDBusConnection>
|
||||||
|
@ -336,39 +337,53 @@ void KWinDesktopConfig::save()
|
||||||
|
|
||||||
// Effect desktop switching
|
// Effect desktop switching
|
||||||
int desktopSwitcher = m_ui->effectComboBox->currentIndex();
|
int desktopSwitcher = m_ui->effectComboBox->currentIndex();
|
||||||
|
bool slideEnabled = false;
|
||||||
|
bool cubeSlideEnabled = false;
|
||||||
|
bool fadeEnabled = false;
|
||||||
switch(desktopSwitcher) {
|
switch(desktopSwitcher) {
|
||||||
case 0:
|
|
||||||
// no effect
|
|
||||||
effectconfig.writeEntry("slideEnabled", false);
|
|
||||||
effectconfig.writeEntry("cubeslideEnabled", false);
|
|
||||||
effectconfig.writeEntry("kwin4_effect_fadedesktopEnabled", false);
|
|
||||||
break;
|
|
||||||
case 1:
|
case 1:
|
||||||
// slide
|
// slide
|
||||||
effectconfig.writeEntry("slideEnabled", true);
|
slideEnabled = true;
|
||||||
effectconfig.writeEntry("cubeslideEnabled", false);
|
|
||||||
effectconfig.writeEntry("kwin4_effect_fadedesktopEnabled", false);
|
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
// cube
|
// cube
|
||||||
effectconfig.writeEntry("slideEnabled", false);
|
cubeSlideEnabled = true;
|
||||||
effectconfig.writeEntry("cubeslideEnabled", true);
|
|
||||||
effectconfig.writeEntry("kwin4_effect_fadedesktopEnabled", false);
|
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
// fadedesktop
|
// fadedesktop
|
||||||
effectconfig.writeEntry("slideEnabled", false);
|
fadeEnabled = true;
|
||||||
effectconfig.writeEntry("cubeslideEnabled", false);
|
|
||||||
effectconfig.writeEntry("kwin4_effect_fadedesktopEnabled", true);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
effectconfig.writeEntry("slideEnabled", slideEnabled);
|
||||||
|
effectconfig.writeEntry("cubeslideEnabled", cubeSlideEnabled);
|
||||||
|
effectconfig.writeEntry("kwin4_effect_fadedesktopEnabled", fadeEnabled);
|
||||||
|
|
||||||
m_editor->save();
|
m_editor->save();
|
||||||
|
|
||||||
m_config->sync();
|
m_config->sync();
|
||||||
// Send signal to all kwin instances
|
// Send signal to all kwin instances
|
||||||
QDBusMessage message = QDBusMessage::createSignal("/KWin", "org.kde.KWin", "reloadConfig");
|
QDBusMessage message = QDBusMessage::createSignal("/KWin", "org.kde.KWin", "reloadConfig");
|
||||||
QDBusConnection::sessionBus().send(message);
|
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);
|
emit changed(false);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue