diff --git a/src/scriptengines/qml/plasmoid/appletinterface.h b/src/scriptengines/qml/plasmoid/appletinterface.h --- a/src/scriptengines/qml/plasmoid/appletinterface.h +++ b/src/scriptengines/qml/plasmoid/appletinterface.h @@ -277,6 +277,14 @@ Q_INVOKABLE QAction *action(QString name) const; + /** + * Should be called before retrieving any action + * to ensure contents are up to date + * @see contextualActionsAboutToShow + * @since 5.58 + */ + Q_INVOKABLE void prepareContextualActions(); + /** * FIXME: remove? * Retrieve the path of a file from the Plasmoid package diff --git a/src/scriptengines/qml/plasmoid/appletinterface.cpp b/src/scriptengines/qml/plasmoid/appletinterface.cpp --- a/src/scriptengines/qml/plasmoid/appletinterface.cpp +++ b/src/scriptengines/qml/plasmoid/appletinterface.cpp @@ -784,6 +784,11 @@ return AppletQuickItem::event(event); } +void AppletInterface::prepareContextualActions() +{ + emit applet()->contextualActionsAboutToShow(); +} + bool AppletInterface::eventFilter(QObject *watched, QEvent *event) { if (event->type() == QEvent::MouseButtonPress) { @@ -825,7 +830,7 @@ if (desktopMenu->winId()) { desktopMenu->windowHandle()->setTransientParent(window()); } - emit applet()->contextualActionsAboutToShow(); + prepareContextualActions(); ci->addAppletActions(desktopMenu, applet(), event); if (!desktopMenu->isEmpty()) {