[x11] Emit clientRemoved after client was removed
Summary:
Currently, there is a guarantee that a client, which is about to be removed,
is no longer in the stacking order(both in constrained and unconstrained)
when Workspace::removeClient is called. However, because the client gets
removed from m_allClients after clientRemoved is emitted, it can be
re-inserted back into the stacking order.
In general, the pattern is to do some work and then notify others about
what you've done by emitting a signal. In the case of Workspace::removeClient,
we emit clientRemoved way before the client actually gets removed.
CCBUG: 392412
CCBUG: 400854
Test Plan:
- Enable the following script:
workspace.clientAdded.connect(function (client) { if (client.skipTaskbar || client.modal || client.transient) { return; } workspace.desktops = workspace.desktops + 1; workspace.currentDesktop = workspace.desktops; client.desktop = workspace.currentDesktop; }); workspace.clientRemoved.connect(function (client) { if (client.skipTaskbar || client.modal || client.transient) { return; } workspace.desktops = workspace.desktops - 1; });
- Open an app, close the app.
Reviewers: KWin, graesslin
Reviewed By: KWin, graesslin
Subscribers: graesslin, kwin
Tags: KWin
Differential Revision: https://phabricator.kde.org/D17069