diff -ur kdelibs-4.0.2/kdecore/config/kconfig.cpp kdelibs-4.0.2-no-cache-kdeglobals-paths/kdecore/config/kconfig.cpp --- kdelibs-4.0.2/kdecore/config/kconfig.cpp 2008-01-05 01:00:39.000000000 +0100 +++ kdelibs-4.0.2-no-cache-kdeglobals-paths/kdecore/config/kconfig.cpp 2008-03-09 23:58:41.000000000 +0100 @@ -60,12 +60,6 @@ { sGlobalFileName = componentData.dirs()->saveLocation("config") + QString::fromLatin1("kdeglobals"); - if (wantGlobals()) { - const KStandardDirs *const dirs = componentData.dirs(); - foreach(const QString& dir, dirs->findAllResources("config", QLatin1String("kdeglobals")) + - dirs->findAllResources("config", QLatin1String("system.kdeglobals"))) - globalFiles.push_front(dir); - } const QString etc_kderc = #ifdef Q_WS_WIN QFile::decodeName( QByteArray(::getenv("WINDIR")) + "\\kde4rc" ); @@ -75,15 +69,11 @@ KEntryMap tmp; // first entry is always /etc/kderc or empty if cannot read if (KStandardDirs::checkAccess(etc_kderc, R_OK)) { - if (!globalFiles.contains(etc_kderc)) - globalFiles.push_front(etc_kderc); - if (!mappingsRegistered) { KSharedPtr backend = KConfigBackend::create(componentData, etc_kderc, QLatin1String("INI")); backend->parseConfig( "en_US", tmp, KConfigBackend::ParseDefaults); } } else { - globalFiles.push_front(QString()); mappingsRegistered = true; } @@ -372,10 +362,31 @@ void KConfigPrivate::parseGlobalFiles() { + QStringList globalFiles; + + if (wantGlobals()) { + const KStandardDirs *const dirs = componentData.dirs(); + foreach(const QString& dir, dirs->findAllResources("config", QLatin1String("kdeglobals")) + + dirs->findAllResources("config", QLatin1String("system.kdeglobals"))) + globalFiles.push_front(dir); + } + const QString etc_kderc = +#ifdef Q_WS_WIN + QFile::decodeName( QByteArray(::getenv("WINDIR")) + "\\kde4rc" ); +#else + QLatin1String("/etc/kde4rc"); +#endif + KEntryMap tmp; + // first entry is always /etc/kderc or empty if cannot read + if (KStandardDirs::checkAccess(etc_kderc, R_OK)) { + if (!globalFiles.contains(etc_kderc)) + globalFiles.push_front(etc_kderc); + } else { + globalFiles.push_front(QString()); + } + // qDebug() << "parsing global files" << globalFiles; - // TODO: can we cache the values in etc_kderc / other global files - // on a per-application basis? const QByteArray utf8Locale = locale.toUtf8(); foreach(const QString& file, globalFiles) { KConfigBackend::ParseOptions parseOpts = KConfigBackend::ParseGlobal|KConfigBackend::ParseExpansions; diff -ur kdelibs-4.0.2/kdecore/config/kconfig_p.h kdelibs-4.0.2-no-cache-kdeglobals-paths/kdecore/config/kconfig_p.h --- kdelibs-4.0.2/kdecore/config/kconfig_p.h 2008-01-05 01:00:39.000000000 +0100 +++ kdelibs-4.0.2-no-cache-kdeglobals-paths/kdecore/config/kconfig_p.h 2008-03-09 23:50:26.000000000 +0100 @@ -82,7 +82,6 @@ KEntryMap entryMap; QString backendType; - QStringList globalFiles; QStack extraFiles; QString locale;