diff --git a/shell/shellcorona.cpp b/shell/shellcorona.cpp --- a/shell/shellcorona.cpp +++ b/shell/shellcorona.cpp @@ -1906,7 +1906,8 @@ { Plasma::Containment *cont = nullptr; for (Plasma::Containment *c : m_desktopContainments.value(activity)) { - if (c->screen() == screenNum) { + //using lastScreen() instead of screen() catches also containments of other activities that aren't current, so not assigned to a screen right now + if (c->lastScreen() == screenNum) { cont = c; if (containment == cont) { return; @@ -1918,6 +1919,7 @@ Q_ASSERT(!m_desktopContainments.value(activity).values().contains(containment)); if (cont) { + m_desktopContainments[activity].remove(cont); disconnect(cont, SIGNAL(destroyed(QObject*)), this, SLOT(desktopContainmentDestroyed(QObject*))); cont->destroy();