diff --git a/abstract_client.h b/abstract_client.h --- a/abstract_client.h +++ b/abstract_client.h @@ -438,9 +438,6 @@ virtual QVector desktops() const { return m_desktops; } - void removeDesktop(VirtualDesktop *desktop) { - m_desktops.removeAll(desktop); - } QVector x11DesktopIds() const; void setMinimized(bool set); diff --git a/workspace.cpp b/workspace.cpp --- a/workspace.cpp +++ b/workspace.cpp @@ -227,9 +227,12 @@ if (kwinApp()->operationMode() == Application::OperationModeWaylandOnly || kwinApp()->operationMode() == Application::OperationModeXwayland) { for (auto it = m_allClients.constBegin(); it != m_allClients.constEnd(); ++it) { - const bool needsMove = (*it)->desktops().count() == 1; - (*it)->removeDesktop(desktop); - if (needsMove) { + if (!(*it)->desktops().contains(desktop)) { + continue; + } + if ((*it)->desktops().count() > 1) { + (*it)->leaveDesktop(desktop); + } else { sendClientToDesktop(*it, qMin(desktop->x11DesktopNumber(), VirtualDesktopManager::self()->count()), true); } }