rendered paste bodyIndex: corona.cpp
===================================================================
--- corona.cpp (revision 1031624)
+++ corona.cpp (working copy)
@@ -342,11 +342,13 @@
void Corona::loadLayout(const QString &configName)
{
KSharedConfigPtr c;
+ bool mergeConfig = false;
if (configName.isEmpty() || configName == d->configName) {
c = config();
} else {
c = KSharedConfig::openConfig(configName);
+ mergeConfig = true;
}
KConfigGroup containments(c, "Containments");
@@ -358,7 +360,7 @@
continue;
}
- int cid = group.toUInt();
+ int cid = mergeConfig ? 0 : group.toUInt();
//kDebug() << "got a containment in the config, trying to make a" << containmentConfig.readEntry("plugin", QString()) << "from" << group;
Containment *c = d->addContainment(containmentConfig.readEntry("plugin", QString()), QVariantList(),
cid, true);
@@ -372,14 +374,24 @@
foreach (Containment *containment, d->containments) {
QString cid = QString::number(containment->id());
- KConfigGroup containmentConfig(&containments, cid);
+ KConfigGroup *appletsConfigGroup = 0;
+ if (mergeConfig) {
+ KConfigGroup containmentConfig(&containments, cid);
+ appletsConfigGroup = new KConfigGroup(&containmentConfig, "Applets");
+ }
foreach (Applet *applet, containment->applets()) {
+ if (mergeConfig) {
+ KConfigGroup externalAppletConfig(appletsConfigGroup, QString::number(applet->id()));
+ externalAppletConfig.copyTo(applet->d->mainConfigGroup());
+ }
+
applet->init();
// We have to flush the applet constraints manually
applet->flushPendingConstraintsEvents();
}
+ delete appletsConfigGroup;
containment->updateConstraints(Plasma::StartupCompletedConstraint);
containment->flushPendingConstraintsEvents();
emit containmentAdded(containment);
@@ -529,9 +541,9 @@
//swap direction if necessary
if (QApplication::isRightToLeft() && alignment != Qt::AlignCenter) {
if (alignment == Qt::AlignRight) {
- alignment == Qt::AlignLeft;
+ alignment = Qt::AlignLeft;
} else {
- alignment == Qt::AlignRight;
+ alignment = Qt::AlignRight;
}
}