AbstractClient: Fix the current VD being always added to the plasma interface

When setting-up the plasma window interface we need to call
`setOnAllDesktops()` after the actual virtual desktops have
been set.

Otherwise, the current desktop would be always added to the
interface (as if the user were unsetting the "onAllDesktops"
flag) and the plasma interface and KWin can get un-synced,
specially if there are specific window rules.

BUG: 452171
FIXED-IN: 5.24.5
This commit is contained in:
Ismael Asensio 2022-04-08 22:53:08 +02:00
parent 5fdf271c32
commit 4c8711f121

View file

@ -1539,7 +1539,6 @@ void AbstractClient::setupWindowManagementInterface()
w->setKeepBelow(keepBelow());
w->setMaximized(maximizeMode() == KWin::MaximizeFull);
w->setMinimized(isMinimized());
w->setOnAllDesktops(isOnAllDesktops());
w->setDemandsAttention(isDemandingAttention());
w->setCloseable(isCloseable());
w->setMaximizeable(isMaximizable());
@ -1652,6 +1651,10 @@ void AbstractClient::setupWindowManagementInterface()
for (const auto vd : qAsConst(m_desktops)) {
w->addPlasmaVirtualDesktop(vd->id());
}
// We need to set `OnAllDesktops` after the actual VD list has been added.
// Otherwise it will unconditionally add the current desktop to the interface
// which may not be the case, for example, when using rules
w->setOnAllDesktops(isOnAllDesktops());
// Plasma Virtual desktop management
// show/hide when the window enters/exits from desktop