diff --git a/effects/kscreen/kscreen.cpp b/effects/kscreen/kscreen.cpp --- a/effects/kscreen/kscreen.cpp +++ b/effects/kscreen/kscreen.cpp @@ -105,19 +105,36 @@ void KscreenEffect::paintWindow(EffectWindow *w, int mask, QRegion region, WindowPaintData &data) { - switch (m_state) { - case StateFadingOut: - data.multiplyOpacity(1.0 - m_timeLine.currentValue()); - break; - case StateFadedOut: - data.multiplyOpacity(0.0); - break; - case StateFadingIn: - data.multiplyOpacity(m_timeLine.currentValue()); - break; - default: - // no adjustment - break; + if (w->hasAlpha()) { + switch (m_state) { + case StateFadingOut: + data.multiplyOpacity(1.0 - m_timeLine.currentValue()); + break; + case StateFadedOut: + data.multiplyOpacity(0.0); + break; + case StateFadingIn: + data.multiplyOpacity(m_timeLine.currentValue()); + break; + default: + // no adjustment + break; + } + } else { + switch (m_state) { + case StateFadingOut: + data.multiplyBrightness(1.0 - m_timeLine.currentValue()); + break; + case StateFadedOut: + data.multiplyBrightness(0.0); + break; + case StateFadingIn: + data.multiplyBrightness(m_timeLine.currentValue()); + break; + default: + // no adjustment + break; + } } effects->paintWindow(w, mask, region, data); }