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