From 153934b66dd52896788a10c94ace6d82e0d3f666 Mon Sep 17 00:00:00 2001 From: "Aaron J. Seigo" Date: Fri, 26 Jun 2009 10:22:20 +0000 Subject: [PATCH] prevent multiple inclusions of the same theme and infinite cycles due to cascading fallbacks svn path=/branches/KDE/4.3/kdelibs/; revision=987552 --- theme.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/theme.cpp b/theme.cpp index c9c963fbf..111ac48c0 100644 --- a/theme.cpp +++ b/theme.cpp @@ -407,17 +407,24 @@ void ThemePrivate::setThemeName(const QString &tempThemeName, bool writeSettings QString fallback = cg.readEntry("FallbackTheme", QString()); fallbackThemes.clear(); - while (!fallback.isEmpty()) { + while (!fallback.isEmpty() && !fallbackThemes.contains(fallback)) { fallbackThemes.append(fallback); QString metadataPath(KStandardDirs::locate("data", "desktoptheme/" + theme + "/metadata.desktop")); KConfig metadata(metadataPath); cg = KConfigGroup(&metadata, "Settings"); fallback = cg.readEntry("FallbackTheme", QString()); + //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()), q, SLOT(colorsChanged()));