diff --git a/kcmkwin/kwindesktop/CMakeLists.txt b/kcmkwin/kwindesktop/CMakeLists.txt index 06ebd993b1..77572bee73 100644 --- a/kcmkwin/kwindesktop/CMakeLists.txt +++ b/kcmkwin/kwindesktop/CMakeLists.txt @@ -18,6 +18,7 @@ target_link_libraries(kcm_kwindesktop KF5::Completion KF5::GlobalAccel KF5::I18n + KF5::Package KF5::WindowSystem KF5::XmlGui ${X11_LIBRARIES} diff --git a/kcmkwin/kwindesktop/main.cpp b/kcmkwin/kwindesktop/main.cpp index 1b90300e7c..31b8e2edf0 100644 --- a/kcmkwin/kwindesktop/main.cpp +++ b/kcmkwin/kwindesktop/main.cpp @@ -33,6 +33,8 @@ along with this program. If not, see . #include #include #include +#include +#include #include #include #include @@ -570,12 +572,17 @@ void KWinDesktopConfig::slotAboutEffectClicked() delete aboutPlugin; }; if (fromKService) { - KServiceTypeTrader* trader = KServiceTypeTrader::self(); - KService::List services; - services = trader->query("KWin/Effect", "[X-KDE-PluginInfo-Name] == 'kwin4_effect_" + effect + '\''); - if (services.isEmpty()) + const QString pluginId = QStringLiteral("kwin4_effect_%1").arg(effect); + const auto effectsMetaData = KPackage::PackageLoader::self()->findPackages( + QStringLiteral("KWin/Effect"), + QStringLiteral("kwin/effects/"), + [&pluginId](const KPluginMetaData &meta) { + return meta.pluginId() == pluginId; + }); + if (effectsMetaData.isEmpty()) { return; - KPluginInfo pluginInfo(services.first()); + } + KPluginInfo pluginInfo(effectsMetaData.first()); const QString name = pluginInfo.name(); const QString comment = pluginInfo.comment();