updt ActiveLayer client layer on client activation

When a client becomes active on a screen with a fullscreen
window on the ActiveLayer, that window needs to be withdrawn
from the active layer explicitly as it does not get this update
with deactivation.

REVIEW: 111084
This commit is contained in:
Thomas Lübking 2013-06-18 01:57:49 +02:00
parent e717c131bf
commit 936b63dc1a

View file

@ -247,11 +247,20 @@ void Workspace::setActiveClient(Client* c)
}
active_client = c;
Q_ASSERT(c == NULL || c->isActive());
if (active_client != NULL)
last_active_client = active_client;
if (active_client) {
last_active_client = active_client;
FocusChain::self()->update(active_client, FocusChain::MakeFirst);
active_client->demandAttention(false);
// activating a client can cause a non active fullscreen window to loose the ActiveLayer status on > 1 screens
if (screens()->count() > 1) {
for (ClientList::Iterator it = clients.begin(); it != clients.end(); ++it) {
if (*it != active_client && (*it)->layer() == ActiveLayer && (*it)->screen() == active_client->screen()) {
updateClientLayer(*it);
}
}
}
}
pending_take_activity = NULL;