[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdebase/workspace/libs/plasma
From:       Aaron J. Seigo <aseigo () kde ! org>
Date:       2008-01-11 18:22:20
Message-ID: 1200075740.336360.19547.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 760003 by aseigo:

make globalConfig() work properly even for containments
BUG:155454


 M  +20 -5     applet.cpp  


--- trunk/KDE/kdebase/workspace/libs/plasma/applet.cpp #760002:760003
@@ -507,11 +507,14 @@
 KConfigGroup Applet::globalConfig() const
 {
     KConfigGroup globalAppletConfig;
-    if (containment() && containment()->corona()) {
-        KSharedConfig::Ptr coronaConfig = containment()->corona()->config();
-        globalAppletConfig = KConfigGroup(coronaConfig, "AppletGlobals");
+    const Containment *c = isContainment() ? dynamic_cast<const Containment*>(this) : containment();
+    QString group = isContainment() ? "ContainmentGlobals" : "AppletGlobals";
+
+    if (c && c->corona()) {
+        KSharedConfig::Ptr coronaConfig = c->corona()->config();
+        globalAppletConfig = KConfigGroup(coronaConfig, group);
     } else {
-        globalAppletConfig = KConfigGroup(KGlobal::config(), "AppletGlobals");
+        globalAppletConfig = KConfigGroup(KGlobal::config(), group);
     }
 
     return KConfigGroup(&globalAppletConfig, globalName());
@@ -935,14 +938,26 @@
 
 Containment* Applet::containment() const
 {
+/*
+ * while this is probably "more correct", much of the code in applet assumes containment
+ * returns zero in the case that this is a containment itself.
+ * if (isContainment()) {
+        return dynamic_cast<Containment*>(const_cast<Applet*>(this));
+    }
+*/
+
     QGraphicsItem *parent = parentItem();
     Containment *c = 0;
+
     while (parent) {
-        if ((c = dynamic_cast<Containment*>(parent))) {
+        Containment *possibleC =  dynamic_cast<Containment*>(parent);
+        if (possibleC && possibleC->isContainment()) {
+            c = possibleC;
             break;
         }
         parent = parent->parentItem();
     }
+
     return c;
 }
 
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic