kdelibs/kdelibs-4.3.1-kdebug#202550...

76 lines
2.0 KiB
Diff

--- branches/KDE/4.3/kdelibs/plasma/private/service_p.h 2009/08/02 18:26:50 1005966
+++ branches/KDE/4.3/kdelibs/plasma/private/service_p.h 2009/08/02 18:27:44 1005967
@@ -73,6 +73,7 @@
ServicePrivate(Service *service)
: q(service),
config(0),
+ dummyConfig(0),
tempFile(0)
{
}
@@ -80,6 +81,7 @@
~ServicePrivate()
{
delete config;
+ delete dummyConfig;
delete tempFile;
}
@@ -98,10 +100,25 @@
associatedGraphicsWidgets.remove(static_cast<QGraphicsWidget*>(obj));
}
+ KConfigGroup dummyGroup()
+ {
+ if (!dummyConfig) {
+ if (!tempFile) {
+ tempFile = new KTemporaryFile;
+ tempFile->open();
+ }
+
+ dummyConfig = new KConfig(tempFile->fileName());
+ }
+
+ return KConfigGroup(dummyConfig, "DummyGroup");
+ }
+
Service *q;
QString destination;
QString name;
ConfigLoader *config;
+ KConfig *dummyConfig;
KTemporaryFile *tempFile;
QMultiHash<QWidget *, QString> associatedWidgets;
QMultiHash<QGraphicsWidget *, QString> associatedGraphicsWidgets;
--- branches/KDE/4.3/kdelibs/plasma/service.cpp 2009/08/02 18:26:50 1005966
+++ branches/KDE/4.3/kdelibs/plasma/service.cpp 2009/08/02 18:27:44 1005967
@@ -116,7 +116,7 @@
{
if (!d->config) {
kDebug() << "No valid operations scheme has been registered";
- return KConfigGroup();
+ return d->dummyGroup();
}
d->config->writeConfig();
@@ -212,6 +212,9 @@
delete d->tempFile;
d->tempFile = 0;
+ delete d->dummyConfig;
+ d->dummyConfig = 0;
+
registerOperationsScheme();
}
@@ -258,6 +261,9 @@
delete d->config;
delete d->tempFile;
+ delete d->dummyConfig;
+ d->dummyConfig = 0;
+
//FIXME: make KSharedConfig and KConfigSkeleton not braindamaged in 4.2 and then get rid of the
// temp file object here
d->tempFile = new KTemporaryFile;