diff --git a/effects/wobblywindows/wobblywindows.h b/effects/wobblywindows/wobblywindows.h --- a/effects/wobblywindows/wobblywindows.h +++ b/effects/wobblywindows/wobblywindows.h @@ -133,6 +133,7 @@ void slotWindowStepUserMovedResized(KWin::EffectWindow *w, const QRect &geometry); void slotWindowFinishUserMovedResized(KWin::EffectWindow *w); void slotWindowMaximizeStateChanged(KWin::EffectWindow *w, bool horizontal, bool vertical); + void slotWindowDeleted(KWin::EffectWindow *w); private: diff --git a/effects/wobblywindows/wobblywindows.cpp b/effects/wobblywindows/wobblywindows.cpp --- a/effects/wobblywindows/wobblywindows.cpp +++ b/effects/wobblywindows/wobblywindows.cpp @@ -156,6 +156,7 @@ connect(effects, SIGNAL(windowMaximizedStateChanged(KWin::EffectWindow*,bool,bool)), this, SLOT(slotWindowMaximizeStateChanged(KWin::EffectWindow*,bool,bool))); connect(effects, &EffectsHandler::windowDataChanged, this, &WobblyWindowsEffect::cancelWindowGrab); + connect(effects, &EffectsHandler::windowDeleted, this, &WobblyWindowsEffect::slotWindowDeleted); } WobblyWindowsEffect::~WobblyWindowsEffect() @@ -1230,6 +1231,15 @@ } } +void WobblyWindowsEffect::slotWindowDeleted(KWin::EffectWindow *w) +{ + auto it = windows.find(w); + if (it != windows.end()) { + freeWobblyInfo(it.value()); + windows.erase(it); + } +} + bool WobblyWindowsEffect::isActive() const { return !windows.isEmpty();