diff --git a/src/plugins/glide/glide.cpp b/src/plugins/glide/glide.cpp index 419ff8defb..6239ca7bcd 100644 --- a/src/plugins/glide/glide.cpp +++ b/src/plugins/glide/glide.cpp @@ -217,22 +217,18 @@ void GlideEffect::windowAdded(EffectWindow *w) void GlideEffect::windowClosed(EffectWindow *w) { - if (effects->activeFullScreenEffect()) { - return; - } - - if (!isGlideWindow(w)) { - return; - } - - if (!w->isVisible() || w->skipsCloseAnimation()) { - return; - } - const void *closeGrab = w->data(WindowClosedGrabRole).value(); if (closeGrab && closeGrab != this) { return; } + if (effects->activeFullScreenEffect() || !isGlideWindow(w) || !w->isVisible() || w->skipsCloseAnimation()) { + const auto it = m_animations.find(w); + if (it != m_animations.end()) { + unredirect(w); + m_animations.erase(it); + } + return; + } w->setData(WindowClosedGrabRole, QVariant::fromValue(static_cast(this)));