Index: corona.cpp =================================================================== --- corona.cpp (revision 740936) +++ corona.cpp (working copy) @@ -234,10 +234,25 @@ int topLeftScreen = 0; QPoint topLeftCorner = desktop->screenGeometry(0).topLeft(); + QHash screenGeometries; + QRect g = desktop->screenGeometry(0); + for (int i = 1; i < numScreens; ++i) { + QRect g2 = desktop->screenGeometry(i); + kDebug() << " screen" << i << "geometry is" << g2; + if (g2.intersects(g)) { + g = g.united(g2); + } else { + screenGeometries.insert(i - 1, g); + g = g2; + } + } + screenGeometries.insert(numScreens - 1, g); + // create a containment for each screen - for (int i = 0; i < numScreens; ++i) { - QRect g = desktop->screenGeometry(i); - kDebug() << " screen " << i << "geometry is" << g; + foreach (int i, screenGeometries.keys()) { + QRect g = screenGeometries[i]; + kDebug() << " screen" << i << "geometry is" << g; + Containment* c = addContainment("desktop"); c->setScreen(i); c->setFormFactor(Plasma::Planar);