wayland: Fix spectacle not covering fullscreen windows

The most recently activated window can be an overlay window that covers
all screens. If its center is not at an output with the fullscreen
window, then the fullscreen window's stack position won't be lowered. In
order to fix that, this change makes isActiveFullscreen() use
Toplevel::isOnOutput(), which uses geometry info, to check if both windows
are on the same output.
This commit is contained in:
Vlad Zahorodnii 2022-02-01 10:17:28 +02:00 committed by Nate Graham
parent 5fe9fd13ad
commit 749cf798ce

View file

@ -2036,7 +2036,7 @@ bool AbstractClient::isActiveFullScreen() const
// according to NETWM spec implementation notes suggests
// "focused windows having state _NET_WM_STATE_FULLSCREEN" to be on the highest layer.
// we'll also take the screen into account
return ac && (ac == this || ac->output() != output()|| ac->allMainClients().contains(const_cast<AbstractClient*>(this)));
return ac && (ac == this || !ac->isOnOutput(output()) || ac->allMainClients().contains(const_cast<AbstractClient*>(this)));
}
#define BORDER(which) \