diff --git a/kcmkwin/kwindesktop/CMakeLists.txt b/kcmkwin/kwindesktop/CMakeLists.txt --- a/kcmkwin/kwindesktop/CMakeLists.txt +++ b/kcmkwin/kwindesktop/CMakeLists.txt @@ -18,6 +18,7 @@ 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 --- a/kcmkwin/kwindesktop/main.cpp +++ b/kcmkwin/kwindesktop/main.cpp @@ -33,6 +33,8 @@ #include #include #include +#include +#include #include #include #include @@ -570,12 +572,17 @@ 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();