diff --git a/abstract_client.h b/abstract_client.h --- a/abstract_client.h +++ b/abstract_client.h @@ -907,6 +907,7 @@ void shadeableChanged(bool); void maximizeableChanged(bool); void desktopFileNameChanged(); + void applicationMenuChanged(); void hasApplicationMenuChanged(bool); void applicationMenuActiveChanged(bool); void unresponsiveChanged(bool); diff --git a/abstract_client.cpp b/abstract_client.cpp --- a/abstract_client.cpp +++ b/abstract_client.cpp @@ -1421,6 +1421,11 @@ w->setGeometry(frameGeometry()); } ); + connect(this, &AbstractClient::applicationMenuChanged, w, + [w, this] { + w->setApplicationMenuPaths(applicationMenuServiceName(), applicationMenuObjectPath()); + } + ); connect(w, &PlasmaWindowInterface::closeRequested, this, [this] { closeWindow(); }); connect(w, &PlasmaWindowInterface::moveRequested, this, [this] { @@ -2465,6 +2470,7 @@ const bool new_hasApplicationMenu = hasApplicationMenu(); + emit applicationMenuChanged(); if (old_hasApplicationMenu != new_hasApplicationMenu) { emit hasApplicationMenuChanged(new_hasApplicationMenu); } @@ -2478,6 +2484,7 @@ const bool new_hasApplicationMenu = hasApplicationMenu(); + emit applicationMenuChanged(); if (old_hasApplicationMenu != new_hasApplicationMenu) { emit hasApplicationMenuChanged(new_hasApplicationMenu); }