diff --git a/shell/dbus/org.kde.PlasmaShell.xml b/shell/dbus/org.kde.PlasmaShell.xml --- a/shell/dbus/org.kde.PlasmaShell.xml +++ b/shell/dbus/org.kde.PlasmaShell.xml @@ -21,5 +21,7 @@ + + diff --git a/shell/shellcorona.h b/shell/shellcorona.h --- a/shell/shellcorona.h +++ b/shell/shellcorona.h @@ -143,6 +143,7 @@ void loadKWinScriptInInteractiveConsole(const QString &script); void toggleActivityManager(); void evaluateScript(const QString &string); + void activateLauncherMenu(); Plasma::Containment *addPanel(const QString &plugin); diff --git a/shell/shellcorona.cpp b/shell/shellcorona.cpp --- a/shell/shellcorona.cpp +++ b/shell/shellcorona.cpp @@ -1635,6 +1635,22 @@ } } + +void ShellCorona::activateLauncherMenu() +{ + for (auto it = m_panelViews.constBegin(), end = m_panelViews.constEnd(); it != end; ++it) { + const auto applets = it.key()->applets(); + for (auto applet : applets) { + if (applet->pluginInfo().property("X-Plasma-Provides").toStringList().contains(QStringLiteral("org.kde.plasma.launchermenu"))) { + if (!applet->globalShortcut().isEmpty()) { + emit applet->activated(); + return; + } + } + } + } +} + // Desktop corona handler