diff --git a/composite.cpp b/composite.cpp --- a/composite.cpp +++ b/composite.cpp @@ -130,6 +130,7 @@ , m_composeAtSwapCompletion(false) { connect(options, &Options::configChanged, this, &Compositor::configChanged); + connect(options, &Options::animationSpeedChanged, this, &Compositor::reinitialize); m_monotonicClock.start(); diff --git a/kwin.kcfg b/kwin.kcfg --- a/kwin.kcfg +++ b/kwin.kcfg @@ -248,11 +248,6 @@ 4 6 - - 3 - 0 - 6 - glx @@ -301,4 +296,10 @@ thumbnails + + + 1 + 0 + + diff --git a/options.h b/options.h --- a/options.h +++ b/options.h @@ -26,6 +26,8 @@ #include "main.h" #include "placement.h" +#include + namespace KWin { @@ -765,9 +767,6 @@ static OpenGLPlatformInterface defaultGlPlatformInterface() { return kwinApp()->shouldUseWaylandForCompositing() ? EglPlatformInterface : GlxPlatformInterface; }; - static int defaultAnimationSpeed() { - return 3; - } /** * Performs loading all settings except compositing related. @@ -844,13 +843,16 @@ void glPreferBufferSwapChanged(); void glPlatformInterfaceChanged(); void windowsBlockCompositingChanged(); + void animationSpeedChanged(); void configChanged(); private: void setElectricBorders(int borders); void syncFromKcfgc(); QScopedPointer m_settings; + KConfigWatcher::Ptr m_configWatcher; + FocusPolicy m_focusPolicy; bool m_nextFocusPrefersMouse; bool m_clickRaise; @@ -918,7 +920,6 @@ bool borderless_maximized_windows; bool show_geometry_tip; bool condensed_title; - int animationSpeed; // 0 - instant, 5 - very slow QHash m_modifierOnlyShortcuts; diff --git a/options.cpp b/options.cpp --- a/options.cpp +++ b/options.cpp @@ -146,10 +146,16 @@ , borderless_maximized_windows(false) , show_geometry_tip(false) , condensed_title(false) - , animationSpeed(Options::defaultAnimationSpeed()) { m_settings->setDefaults(); syncFromKcfgc(); + + m_configWatcher = KConfigWatcher::create(m_settings->sharedConfig()); + connect(m_configWatcher.data(), &KConfigWatcher::configChanged, this, [this](const KConfigGroup &group, const QByteArrayList &names) { + if (group.name() == QLatin1String("KDE") && names.contains(QByteArrayLiteral("AnimationDurationFactor"))) { + emit animationSpeedChanged(); + } + }); } Options::~Options() @@ -966,9 +972,6 @@ previews = HiddenPreviewsAlways; setHiddenPreviews(previews); - // TOOD: add setter - animationSpeed = qBound(0, config.readEntry("AnimationSpeed", Options::defaultAnimationSpeed()), 6); - auto interfaceToKey = [](OpenGLPlatformInterface interface) { switch (interface) { case GlxPlatformInterface: @@ -1099,8 +1102,11 @@ double Options::animationTimeFactor() const { - const double factors[] = { 0, 0.2, 0.5, 1, 2, 4, 20 }; - return factors[ animationSpeed ]; + #ifndef KCMRULES + return m_settings->animationDurationFactor(); +#else + return 0; +#endif } Options::WindowOperation Options::operationMaxButtonClick(Qt::MouseButtons button) const