diff --git a/activation.cpp b/activation.cpp index bad68d7ba0..f924bbc212 100644 --- a/activation.cpp +++ b/activation.cpp @@ -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;