All pastes #1595197 Raw Edit

Someone

public text v1 · immutable
#1595197 ·published 2009-10-05 18:22 UTC
rendered paste body
Index: 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;
         }
     }