diff --git a/libtaskmanager/tasktools.cpp b/libtaskmanager/tasktools.cpp --- a/libtaskmanager/tasktools.cpp +++ b/libtaskmanager/tasktools.cpp @@ -89,9 +89,7 @@ } if (url.isLocalFile() && KDesktopFile::isDesktopFile(url.toLocalFile())) { - KDesktopFile f(url.toLocalFile()); - - const KService::Ptr service = KService::serviceByStorageId(f.fileName()); + const KService::Ptr service = KService::serviceByStorageId(url.fileName()); // Resolve to non-absolute menuId-based URL if possible. if (service) { @@ -110,13 +108,16 @@ if (data.icon.isNull()) { data.icon = QIcon::fromTheme(service->icon()); } - } else if (f.tryExec()) { - data.name = f.readName(); - data.genericName = f.readGenericName(); - data.id = QUrl::fromLocalFile(f.fileName()).fileName(); + } else { + KDesktopFile f(url.toLocalFile()); + if (f.tryExec()) { + data.name = f.readName(); + data.genericName = f.readGenericName(); + data.id = QUrl::fromLocalFile(f.fileName()).fileName(); - if (data.icon.isNull()) { - data.icon = QIcon::fromTheme(f.readIcon()); + if (data.icon.isNull()) { + data.icon = QIcon::fromTheme(f.readIcon()); + } } } @@ -312,7 +313,7 @@ sortServicesByMenuId(services, appId); } - if (services.isEmpty()) { + if (services.isEmpty() && !xWindowsWMClassName.isEmpty()) { services = KServiceTypeTrader::self()->query(QStringLiteral("Application"), QStringLiteral("exist Exec and ('%1' =~ StartupWMClass)").arg(xWindowsWMClassName)); sortServicesByMenuId(services, xWindowsWMClassName); }