diff options
-rw-r--r-- | src/sessionsiconholder.cpp | 9 | ||||
-rw-r--r-- | src/vsession.cpp | 6 | ||||
-rw-r--r-- | src/xsession.cpp | 14 |
3 files changed, 13 insertions, 16 deletions
diff --git a/src/sessionsiconholder.cpp b/src/sessionsiconholder.cpp index 7cce455..67f1701 100644 --- a/src/sessionsiconholder.cpp +++ b/src/sessionsiconholder.cpp @@ -66,10 +66,11 @@ QIcon SessionsIconHolder::getIcon(const QString& name) { // else load icon from resource QIcon icon; QString resName(":" + name.toLower()); - if (QResource(resName + ".svg").isValid()) { - icon = QIcon(resName + ".svg"); - } else if (QResource(resName).isValid()) { - icon = QIcon(resName); + if (QResource(resName).isValid()) { + icon = QIcon(resName); + } else if (QFileInfo(name).isAbsolute() && QFile::exists(name)) { + // absolute icon path and file exists + icon = QIcon(name); } else { icon = QIcon(); } diff --git a/src/vsession.cpp b/src/vsession.cpp index 991a117..f0038aa 100644 --- a/src/vsession.cpp +++ b/src/vsession.cpp @@ -48,12 +48,6 @@ QIcon VSession::icon() const { if (!url_icon.isNull()) { return url_icon; } - } else if (QFileInfo(icon).isAbsolute()) { - // try to load icon from file - QIcon file_icon(icon); - if (!file_icon.isNull()) { - return file_icon; - } } if (!icon.isEmpty()) { QIcon res_icon(iconHolder->getIcon(icon)); diff --git a/src/xsession.cpp b/src/xsession.cpp index ff5de57..f4c8a9d 100644 --- a/src/xsession.cpp +++ b/src/xsession.cpp @@ -88,9 +88,11 @@ int XSession::priority() const { } QIcon XSession::icon() const { - QString icon(this->icon_); - - if (icon.isEmpty()) { + QIcon retIcon; + if (!this->icon_.isEmpty()) { + retIcon = SessionsIconHolder::get()->getIcon(this->icon_); + } + if (retIcon.isNull()) { if (this->exec_.contains("kde", Qt::CaseInsensitive)) { icon = "kde"; } else if (this->exec_.contains("gnome", Qt::CaseInsensitive)) { @@ -104,9 +106,9 @@ QIcon XSession::icon() const { } else { icon = "linux"; } - } - - return SessionsIconHolder::get()->getIcon(icon); + retIcon = SessionsIconHolder::get()->getIcon(icon); + } + return retIcon; } bool XSession::run() const { |