[kcmkwin/options] Load/Unload WindowGeometry effect

Depending on the state of the show window geometry we need to load
or unload the effect.

BUG: 343272
FIXED-IN: 5.2.1
REVIEW: 122258
This commit is contained in:
Martin Gräßlin 2015-01-26 11:41:09 +01:00
parent 658ff303fe
commit 62d71bc247
2 changed files with 17 additions and 3 deletions

View file

@ -2,10 +2,12 @@
# KI18N Translation Domain for this library
add_definitions(-DTRANSLATION_DOMAIN=\"kcmkwm\")
set(kcm_kwinoptions_PART_SRCS windows.cpp mouse.cpp main.cpp )
set(kcm_kwinoptions_PART_SRCS windows.cpp mouse.cpp main.cpp ${KWIN_SOURCE_DIR}/effects/effect_builtins.cpp )
ki18n_wrap_ui(kcm_kwinoptions_PART_SRCS actions.ui advanced.ui focus.ui mouse.ui moving.ui)
qt5_add_dbus_interface( kcm_kwinoptions_PART_SRCS
${KWIN_SOURCE_DIR}/org.kde.kwin.Effects.xml kwin_effects_interface)
add_library(kcm_kwinoptions MODULE ${kcm_kwinoptions_PART_SRCS})
target_link_libraries(kcm_kwinoptions Qt5::DBus KF5::Completion KF5::I18n KF5::ConfigWidgets KF5::Service)
target_link_libraries(kcm_kwinoptions Qt5::DBus KF5::Completion KF5::I18n KF5::ConfigWidgets KF5::Service KF5::WindowSystem)
install(TARGETS kcm_kwinoptions DESTINATION ${PLUGIN_INSTALL_DIR} )

View file

@ -41,6 +41,8 @@
#include <X11/Xutil.h>
#include "windows.h"
#include <effect_builtins.h>
#include <kwin_effects_interface.h>
// kwin config keywords
#define KWIN_FOCUS "FocusPolicy"
@ -585,7 +587,8 @@ void KMovingConfig::save(void)
cg.writeEntry(KWM_CNTR_SNAP_ZONE, getCenterSnapZone());
cg.writeEntry("SnapOnlyWhenOverlapping", m_ui->OverlapSnap->isChecked());
KConfigGroup(config, "Plugins").writeEntry("windowgeometryEnabled", getGeometryTip());
const bool geometryTip = getGeometryTip();
KConfigGroup(config, "Plugins").writeEntry("windowgeometryEnabled", geometryTip);
if (standAlone) {
config->sync();
@ -594,6 +597,15 @@ void KMovingConfig::save(void)
QDBusMessage::createSignal("/KWin", "org.kde.KWin", "reloadConfig");
QDBusConnection::sessionBus().send(message);
}
// and reconfigure the effect
OrgKdeKwinEffectsInterface interface(QStringLiteral("org.kde.KWin"),
QStringLiteral("/Effects"),
QDBusConnection::sessionBus());
if (geometryTip) {
interface.loadEffect(KWin::BuiltInEffects::nameForEffect(KWin::BuiltInEffect::WindowGeometry));
} else {
interface.unloadEffect(KWin::BuiltInEffects::nameForEffect(KWin::BuiltInEffect::WindowGeometry));
}
emit KCModule::changed(false);
}