SVN commit 1216356 by mart: when taking an unused containment fail, explicitly create a new one or we end up reassigning the same over and over again CCMAIL:plasma-devel@kde.org M +9 -2 activity.cpp --- trunk/KDE/kdebase/workspace/plasma/desktop/shell/activity.cpp #1216355:1216356 @@ -151,6 +151,7 @@ Plasma::Containment* Activity::containmentForScreen(int screen, int desktop) { Plasma::Containment *containment = m_containments.value(QPair(screen, desktop)); + if (!containment) { kDebug() << "adding containment for" << screen << desktop; // first look to see if there are any unnasigned containments that are candidates for @@ -172,6 +173,7 @@ // this allows the corona to either grab one for us that already exists matching // screen and desktop, or create a new one. this also works regardless of immutability containment = PlasmaApp::self()->corona()->containmentForScreen(screen, desktop, m_plugin); + if (!containment || !containment->context()->currentActivityId().isEmpty()) { // possibly a plugin failure, let's go for the default containment = PlasmaApp::self()->corona()->containmentForScreen(screen, desktop, "default"); @@ -189,13 +191,18 @@ // we got a containment, but it belongs to some other activity; let's unassign it // from a screen and grab a new one containment->setScreen(0); - containment = PlasmaApp::self()->corona()->containmentForScreen(screen, desktop, m_plugin); + containment = PlasmaApp::self()->corona()->addContainment(m_plugin); + if (!containment) { // possibly a plugin failure, let's go for the default - containment = PlasmaApp::self()->corona()->containmentForScreen(screen, desktop, "default"); + containment = PlasmaApp::self()->corona()->addContainment("default"); } + + if (containment) { + containment->setScreen(screen, desktop); } } + } if (containment) { insertContainment(containment, screen, desktop); _______________________________________________ Plasma-devel mailing list Plasma-devel@kde.org https://mail.kde.org/mailman/listinfo/plasma-devel