From f02a65c95eb6abe581f51796c7e5397ac6401915 Mon Sep 17 00:00:00 2001 From: "Aaron J. Seigo" Date: Fri, 11 Jan 2008 18:21:53 +0000 Subject: [PATCH] make globalConfig() work properly even for containments BUG:155454 svn path=/trunk/KDE/kdebase/workspace/libs/plasma/; revision=760003 --- applet.cpp | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/applet.cpp b/applet.cpp index dafaf644f..d8888a290 100644 --- a/applet.cpp +++ b/applet.cpp @@ -507,11 +507,14 @@ KConfigGroup Applet::config() const 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(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 @@ FormFactor Applet::formFactor() const 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(const_cast(this)); + } +*/ + QGraphicsItem *parent = parentItem(); Containment *c = 0; + while (parent) { - if ((c = dynamic_cast(parent))) { + Containment *possibleC = dynamic_cast(parent); + if (possibleC && possibleC->isContainment()) { + c = possibleC; break; } parent = parent->parentItem(); } + return c; }