SVN commit 1217532 by aseigo: resort to defaults if the image set no longer exists M +23 -8 image.cpp M +1 -0 image.h --- trunk/KDE/kdebase/workspace/plasma/generic/wallpapers/image/image.cpp #1217531:1217532 @@ -78,12 +78,8 @@ m_resizeMethod = (ResizeMethod)config.readEntry("wallpaperposition", (int)ScaledResize); m_wallpaper = config.readEntry("wallpaper", QString()); if (m_wallpaper.isEmpty()) { - m_wallpaper = Plasma::Theme::defaultTheme()->wallpaperPath(); - int index = m_wallpaper.indexOf("/contents/images/"); - if (index > -1) { // We have file from package -> get path to package - m_wallpaper = m_wallpaper.left(index); + useSingleImageDefaults(); } - } m_color = config.readEntry("wallpapercolor", QColor(Qt::black)); m_usersWallpapers = config.readEntry("userswallpapers", QStringList()); @@ -118,6 +114,15 @@ m_animation->setProperty("endValue", 1.0); } +void Image::useSingleImageDefaults() +{ + m_wallpaper = Plasma::Theme::defaultTheme()->wallpaperPath(); + int index = m_wallpaper.indexOf("/contents/images/"); + if (index > -1) { // We have file from package -> get path to package + m_wallpaper = m_wallpaper.left(index); + } +} + void Image::save(KConfigGroup &config) { config.writeEntry("slideTimer", m_delay); @@ -404,7 +409,7 @@ void Image::setSingleImage() { if (m_wallpaper.isEmpty()) { - return; + useSingleImageDefaults(); } QString img; @@ -412,9 +417,9 @@ if (QDir::isAbsolutePath(m_wallpaper)) { Plasma::Package b(m_wallpaper, packageStructure(this)); img = b.filePath("preferred"); - kDebug() << img << m_wallpaper; + //kDebug() << img << m_wallpaper; - if (img.isEmpty()) { + if (img.isEmpty() && QFile::exists(m_wallpaper)) { img = m_wallpaper; } } else { @@ -430,6 +435,16 @@ } } + if (img.isEmpty()) { + // ok, so the package we have failed to work out; let's try the default + // if we have already + const QString wallpaper = m_wallpaper; + useSingleImageDefaults(); + if (wallpaper != m_wallpaper) { + setSingleImage(); + } + } + if (!m_size.isEmpty()) { renderWallpaper(img); } --- trunk/KDE/kdebase/workspace/plasma/generic/wallpapers/image/image.h #1217531:1217532 @@ -93,6 +93,7 @@ void calculateGeometry(); void setSingleImage(); void updateWallpaperActions(); + void useSingleImageDefaults(); private: static bool s_startupResumed;