[effects/slideback] Ignore windows which are not in visible area
Summary: The PresentWindows effect does not hide the window to close the selected window. Instead it moves it outside the visible area. As this is a "special" KWin window it is on top of the stacking order and needs to be ignored in the slideback effect. Instead of doing a special casing for this window the effect is changed to ignore windows outside the visible area in general. Windows outside the visible area just don't make sense to block the slideback effect. BUG: 381402 FIXED-IN: 5.10.4 Test Plan: Slideback works after using Present Windows effect Reviewers: #kwin, #plasma Subscribers: plasma-devel, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D6468
This commit is contained in:
parent
aefb5f4dd9
commit
24ff93854d
1 changed files with 4 additions and 1 deletions
|
@ -307,8 +307,11 @@ bool SlideBackEffect::intersects(EffectWindow* windowUnder, const QRect &windowO
|
||||||
EffectWindowList SlideBackEffect::usableWindows(const EffectWindowList & allWindows)
|
EffectWindowList SlideBackEffect::usableWindows(const EffectWindowList & allWindows)
|
||||||
{
|
{
|
||||||
EffectWindowList retList;
|
EffectWindowList retList;
|
||||||
|
auto isWindowVisible = [] (const EffectWindow *window) {
|
||||||
|
return window && effects->virtualScreenGeometry().intersects(window->geometry());
|
||||||
|
};
|
||||||
foreach (EffectWindow * tmp, allWindows) {
|
foreach (EffectWindow * tmp, allWindows) {
|
||||||
if (isWindowUsable(tmp)) {
|
if (isWindowUsable(tmp) && isWindowVisible(tmp)) {
|
||||||
retList.append(tmp);
|
retList.append(tmp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue