summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Gräßlin <mgraesslin@kde.org>2017-03-28 15:51:00 (GMT)
committerMartin Gräßlin <mgraesslin@kde.org>2017-03-31 05:42:11 (GMT)
commit49fc31059433fe495090b8987e07043b4e3d893d (patch)
treeeff3b1490e129a72a34deda4e98ed0a43c24f2ab
parent3d56f58bf9df00541d4fc05b670e813b03c4e8b6 (diff)
[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
-rw-r--r--effects/slidingpopups/slidingpopups.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/effects/slidingpopups/slidingpopups.cpp b/effects/slidingpopups/slidingpopups.cpp
index 174f67b..483ddde 100644
--- a/effects/slidingpopups/slidingpopups.cpp
+++ b/effects/slidingpopups/slidingpopups.cpp
@@ -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);