diff --git a/effects/slideback/slideback.h b/effects/slideback/slideback.h --- a/effects/slideback/slideback.h +++ b/effects/slideback/slideback.h @@ -66,6 +66,8 @@ int m_tabboxActive; QList clippedRegions; + QMap m_windowForceBlurRoleState; + QRect getSlideDestination(const QRect &windowUnderGeometry, const QRect &windowOverGeometry); bool isWindowUsable(EffectWindow *w); bool intersects(EffectWindow *windowUnder, const QRect &windowOverGeometry); diff --git a/effects/slideback/slideback.cpp b/effects/slideback/slideback.cpp --- a/effects/slideback/slideback.cpp +++ b/effects/slideback/slideback.cpp @@ -149,14 +149,25 @@ motionManager.calculate(time); data.mask |= Effect::PAINT_SCREEN_WITH_TRANSFORMED_WINDOWS; } + + for (auto const &w : effects->stackingOrder()) { + m_windowForceBlurRoleState[w] = w->data(WindowForceBlurRole).toBool(); + w->setData(WindowForceBlurRole, QVariant(true)); + } + effects->prePaintScreen(data, time); } void SlideBackEffect::postPaintScreen() { if (motionManager.areWindowsMoving()) { effects->addRepaintFull(); } + + for (auto &w : effects->stackingOrder()) { + w->setData(WindowForceBlurRole, m_windowForceBlurRoleState.value(w, false)); + } + effects->postPaintScreen(); }