[slidingpopups] Only remove WindowClosedGrabRole if the effect owns the grab

Summary:
The effect unset the WindowClosedGrabRole unconditionally if it does not
manage the window. This results in any grab set by other effects to break.

BUG: 376609
FIXED-IN: 5.9.5

Reviewers: #kwin, #plasma

Subscribers: plasma-devel, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D5225
This commit is contained in:
Martin Gräßlin 2017-03-28 17:51:00 +02:00
parent 3d56f58bf9
commit 49fc310594

View file

@ -360,7 +360,9 @@ void SlidingPopupsEffect::slotPropertyNotify(EffectWindow* w, long a)
if (data.length() < 1) {
// Property was removed, thus also remove the effect for window
w->setData(WindowClosedGrabRole, QVariant());
if (w->data(WindowClosedGrabRole).value<void *>() == this) {
w->setData(WindowClosedGrabRole, QVariant());
}
delete mAppearingWindows.take(w);
delete mDisappearingWindows.take(w);
mWindowsData.remove(w);