prevent multiple inclusions of the same theme and infinite cycles due to cascading fallbacks
svn path=/branches/KDE/4.3/kdelibs/; revision=987552
This commit is contained in:
parent
115e507adb
commit
153934b66d
13
theme.cpp
13
theme.cpp
@ -407,17 +407,24 @@ void ThemePrivate::setThemeName(const QString &tempThemeName, bool writeSettings
|
|||||||
QString fallback = cg.readEntry("FallbackTheme", QString());
|
QString fallback = cg.readEntry("FallbackTheme", QString());
|
||||||
|
|
||||||
fallbackThemes.clear();
|
fallbackThemes.clear();
|
||||||
while (!fallback.isEmpty()) {
|
while (!fallback.isEmpty() && !fallbackThemes.contains(fallback)) {
|
||||||
fallbackThemes.append(fallback);
|
fallbackThemes.append(fallback);
|
||||||
|
|
||||||
QString metadataPath(KStandardDirs::locate("data", "desktoptheme/" + theme + "/metadata.desktop"));
|
QString metadataPath(KStandardDirs::locate("data", "desktoptheme/" + theme + "/metadata.desktop"));
|
||||||
KConfig metadata(metadataPath);
|
KConfig metadata(metadataPath);
|
||||||
cg = KConfigGroup(&metadata, "Settings");
|
cg = KConfigGroup(&metadata, "Settings");
|
||||||
fallback = cg.readEntry("FallbackTheme", QString());
|
fallback = cg.readEntry("FallbackTheme", QString());
|
||||||
|
|
||||||
//TODO: grab the fallback's wallpaper defaults?
|
//TODO: grab the fallback's wallpaper defaults?
|
||||||
}
|
}
|
||||||
fallbackThemes.append("oxygen");
|
|
||||||
fallbackThemes.append(ThemePrivate::defaultTheme);
|
if (!fallbackThemes.contains("oxygen")) {
|
||||||
|
fallbackThemes.append("oxygen");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!fallbackThemes.contains(ThemePrivate::defaultTheme)) {
|
||||||
|
fallbackThemes.append(ThemePrivate::defaultTheme);
|
||||||
|
}
|
||||||
|
|
||||||
QObject::disconnect(KGlobalSettings::self(), SIGNAL(kdisplayPaletteChanged()),
|
QObject::disconnect(KGlobalSettings::self(), SIGNAL(kdisplayPaletteChanged()),
|
||||||
q, SLOT(colorsChanged()));
|
q, SLOT(colorsChanged()));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user