On Wednesday 10 June 2009, Aaron J. Seigo wrote: > we should still catch such mistakes gracefully, however. does the attached > patch help?
that patch could be hazardous to your health. try the attached one instead as it actually works. i'm not sure i like adding that sort of overhead on every parent changed call, though.. not sure it's overhead that matters either, however. it shouldn't, really as that's not really a "hot path" and this does make things a bit more robust. -- Aaron J. Seigo humru othro a kohnu se GPG Fingerprint: 8B8B 2209 0C6F 7C47 B1EA EE75 D6B7 2EB1 A7F1 DB43 KDE core developer sponsored by Qt Software
Index: applet.cpp
===================================================================
--- applet.cpp (revision 979854)
+++ applet.cpp (working copy)
@@ -1972,6 +1972,24 @@
}
}
break;
+ case ItemParentChange:
+ if (d->mainConfig && !d->isContainment &&
+ !containment() &&
+ dynamic_cast<Containment*>(value.value<QGraphicsItem *>())) {
+ // if this is an applet, and we've just been assigned to our first containment,
+ // but the applet did something stupid like ask for the config() object prior to
+ // this happening (e.g. inits ctor) then let's repair that situation for them.
+ kWarning() << "Configuration object was requested prior to init(), which is too early. "
+ "Please fix this item:" << parentItem() << value.value<QGraphicsItem *>()
+ << name();
+ KConfigGroup *old = d->mainConfig;
+ KConfigGroup appletConfig = dynamic_cast<Containment*>(value.value<QGraphicsItem *>())->config();
+ appletConfig = KConfigGroup(&appletConfig, "Applets");
+ d->mainConfig = new KConfigGroup(&appletConfig, QString::number(d->appletId));
+ old->copyTo(d->mainConfig);
+ old->deleteGroup();
+ delete old;
+ }
case ItemPositionChange:
return (immutability() == Mutable || isContainment() || formFactor() == Horizontal || formFactor() == Vertical) ? value : pos();
break;
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ Plasma-devel mailing list [email protected] https://mail.kde.org/mailman/listinfo/plasma-devel
