Diffusion KWin 8af6d4f5dc74

[x11] Emit clientRemoved after client was removed

Authored by zzag on Nov 20 2018, 8:06 PM.

Description

[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

Details

Committed
zzagNov 26 2018, 8:50 AM
Reviewer
KWin
Differential Revision
D17069: [x11] Emit clientRemoved after client was removed
Parents
R108:a28410d80a0d: SVN_SILENT made messages (.desktop file) - always resolve ours
Branches
Unknown
Tags
Unknown