diff --git a/src/lib/plugins/plugins.cpp b/src/lib/plugins/plugins.cpp index 32d390ad3..585a265a8 100644 --- a/src/lib/plugins/plugins.cpp +++ b/src/lib/plugins/plugins.cpp @@ -108,7 +108,12 @@ PluginSpec Plugins::createSpec(const DesktopFile &metaData) if (QFileInfo::exists(iconName)) { spec.icon = QIcon(iconName).pixmap(32); } else { - spec.icon = QIcon::fromTheme(iconName).pixmap(32); + const QString relativeFile = QFileInfo(metaData.fileName()).dir().absoluteFilePath(iconName); + if (QFileInfo::exists(relativeFile)) { + spec.icon = QIcon(relativeFile).pixmap(32); + } else { + spec.icon = QIcon::fromTheme(iconName).pixmap(32); + } } } diff --git a/src/lib/tools/desktopfile.cpp b/src/lib/tools/desktopfile.cpp index 464add83b..b7b23b0ea 100644 --- a/src/lib/tools/desktopfile.cpp +++ b/src/lib/tools/desktopfile.cpp @@ -23,13 +23,18 @@ DesktopFile::DesktopFile() { } -DesktopFile::DesktopFile(const QString &filePath) +DesktopFile::DesktopFile(const QString &fileName) { - m_settings.reset(new QSettings(filePath, QSettings::IniFormat)); + m_settings.reset(new QSettings(fileName, QSettings::IniFormat)); m_settings->setIniCodec("UTF-8"); m_settings->beginGroup(QSL("Desktop Entry")); } +QString DesktopFile::fileName() const +{ + return m_settings ? m_settings->fileName() : QString(); +} + QString DesktopFile::name() const { return value(QSL("Name"), true).toString(); diff --git a/src/lib/tools/desktopfile.h b/src/lib/tools/desktopfile.h index 87db58ddf..ec561ef82 100644 --- a/src/lib/tools/desktopfile.h +++ b/src/lib/tools/desktopfile.h @@ -27,7 +27,9 @@ class FALKON_EXPORT DesktopFile { public: explicit DesktopFile(); - explicit DesktopFile(const QString &filePath); + explicit DesktopFile(const QString &fileName); + + QString fileName() const; QString name() const; QString comment() const;