diff options
author | Timothy Pearson <[email protected]> | 2013-07-24 14:04:34 -0500 |
---|---|---|
committer | Timothy Pearson <[email protected]> | 2013-07-24 14:04:34 -0500 |
commit | 0d3ebd90203be2314e9c9fece66216f36dab3abe (patch) | |
tree | 4291bbfa32286d328059df54f4e3cc5b8cea98d0 /kcontrol | |
parent | 763b290f0123855a1d9e8fde0583297e0ce5941b (diff) | |
download | tdebase-0d3ebd90203be2314e9c9fece66216f36dab3abe.tar.gz tdebase-0d3ebd90203be2314e9c9fece66216f36dab3abe.zip |
Do not display screensavers in the configuration dialog that are not installed on the system
Diffstat (limited to 'kcontrol')
-rw-r--r-- | kcontrol/screensaver/scrnsave.cpp | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/kcontrol/screensaver/scrnsave.cpp b/kcontrol/screensaver/scrnsave.cpp index 776c8e43a..8980c8e3c 100644 --- a/kcontrol/screensaver/scrnsave.cpp +++ b/kcontrol/screensaver/scrnsave.cpp @@ -27,6 +27,7 @@ #include <tqpushbutton.h> #include <tqslider.h> #include <tqtimer.h> +#include <tqfileinfo.h> #include <tqwhatsthis.h> #include <dcopclient.h> @@ -519,9 +520,28 @@ void KScreenSaver::findSavers() TQString file = mSaverFileList[mNumLoaded]; SaverConfig *saver = new SaverConfig; if (saver->read(file)) { - mSaverList.append(saver); - } else + TQString saverexec = TQString("%1/%2").arg(XSCREENSAVER_HACKS_DIR).arg(saver->exec()); + // find the xscreensaver executable + //work around a TDEStandardDirs::findExe() "feature" where it looks in $TDEDIR/bin first no matter what and sometimes finds the wrong executable + TQFileInfo checkExe; + checkExe.setFile(saverexec); + if (checkExe.exists() && checkExe.isExecutable() && checkExe.isFile()) { + mSaverList.append(saver); + } + else { + // Executable not present in XScreenSaver directory! + // Try standard paths + if (TDEStandardDirs::findExe(saver->exec()) != TQString::null) { + mSaverList.append(saver); + } + else { + delete saver; + } + } + } + else { delete saver; + } } if ( (unsigned)mNumLoaded == mSaverFileList.count() ) { |