Fixed showing plugins menu on macOS

This commit is contained in:
Eism 2022-02-21 21:46:20 +02:00
parent ab08c2568e
commit 10c5f73395
7 changed files with 24 additions and 10 deletions

View file

@ -50,8 +50,13 @@ AppWindow {
menu.addItem(menuItem) menu.addItem(menuItem)
} }
item.subitemsChanged.connect(function(subitems) { item.subitemsChanged.connect(function(subitems, menuId) {
menuBar.menus[i].subitems = subitems for (var l in menuBar.menus) {
var menu = menuBar.menus[l]
if (menu.id === menuId) {
menuBar.menus[l].subitems = subitems
}
}
}) })
menuBar.addMenu(menu) menuBar.addMenu(menu)
@ -61,6 +66,7 @@ AppWindow {
function makeMenu(menuInfo) { function makeMenu(menuInfo) {
var menu = menuComponent.createObject(menuBar) var menu = menuComponent.createObject(menuBar)
menu.id = menuInfo.id
menu.title = menuInfo.title menu.title = menuInfo.title
menu.enabled = menuInfo.enabled menu.enabled = menuInfo.enabled
menu.subitems = menuInfo.subitems menu.subitems = menuInfo.subitems
@ -87,6 +93,7 @@ AppWindow {
id: menuComponent id: menuComponent
PLATFORM.Menu { PLATFORM.Menu {
property string id: ""
property var subitems: [] property var subitems: []
onAboutToShow: { onAboutToShow: {

View file

@ -332,11 +332,6 @@ MenuItem* AppMenuModel::makePluginsMenu()
MenuItemList AppMenuModel::makePluginsMenuSubitems() MenuItemList AppMenuModel::makePluginsMenuSubitems()
{ {
MenuItem* managePlugins = makeMenuItem("manage-plugins");
if (!managePlugins) {
return {};
}
MenuItemList subitems { MenuItemList subitems {
makeMenuItem("manage-plugins"), makeMenuItem("manage-plugins"),
}; };

View file

@ -182,7 +182,7 @@ void MenuItem::setSubitems(const QList<MenuItem*>& subitems)
} }
m_subitems = subitems; m_subitems = subitems;
emit subitemsChanged(m_subitems); emit subitemsChanged(m_subitems, m_id);
} }
void MenuItem::setAction(const UiAction& action) void MenuItem::setAction(const UiAction& action)

View file

@ -111,7 +111,7 @@ signals:
void selectableChanged(bool selectable); void selectableChanged(bool selectable);
void selectedChanged(bool selected); void selectedChanged(bool selected);
void roleChanged(int role); void roleChanged(int role);
void subitemsChanged(QList<mu::uicomponents::MenuItem*> subitems); void subitemsChanged(QList<mu::uicomponents::MenuItem*> subitems, const QString& menuId);
void actionChanged(); void actionChanged();
private: private:

View file

@ -64,6 +64,14 @@ void PluginsModule::registerExports()
ioc()->registerExport<IPluginsConfiguration>(moduleName(), s_configuration); ioc()->registerExport<IPluginsConfiguration>(moduleName(), s_configuration);
} }
void PluginsModule::resolveImports()
{
auto ar = ioc()->resolve<ui::IUiActionsRegister>(moduleName());
if (ar) {
ar->reg(s_pluginsUiActions);
}
}
void PluginsModule::registerResources() void PluginsModule::registerResources()
{ {
plugins_init_qrc(); plugins_init_qrc();
@ -95,6 +103,7 @@ void PluginsModule::onDelayedInit()
auto ar = ioc()->resolve<ui::IUiActionsRegister>(moduleName()); auto ar = ioc()->resolve<ui::IUiActionsRegister>(moduleName());
if (ar) { if (ar) {
//! NOTE: Re-registration of actions for new available plugins
ar->reg(s_pluginsUiActions); ar->reg(s_pluginsUiActions);
//! NOTE: Notify about plugins changed for updating actions state //! NOTE: Notify about plugins changed for updating actions state

View file

@ -31,6 +31,7 @@ public:
std::string moduleName() const override; std::string moduleName() const override;
void registerExports() override; void registerExports() override;
void resolveImports() override;
void registerResources() override; void registerResources() override;
void registerUiTypes() override; void registerUiTypes() override;
void onInit(const framework::IApplication::RunMode& mode) override; void onInit(const framework::IApplication::RunMode& mode) override;

View file

@ -25,6 +25,8 @@
#include "translation.h" #include "translation.h"
#include "log.h" #include "log.h"
#include "shortcuts/shortcutstypes.h"
using namespace mu::plugins; using namespace mu::plugins;
using namespace mu::framework; using namespace mu::framework;
using namespace mu::async; using namespace mu::async;
@ -112,7 +114,7 @@ QVariant PluginsModel::data(const QModelIndex& index, int role) const
return plugin.version.toString(); return plugin.version.toString();
case rShortcuts: case rShortcuts:
if (!plugin.shortcuts.empty()) { if (!plugin.shortcuts.empty()) {
return QString::fromStdString(plugin.shortcuts); return shortcuts::sequencesToNativeText(shortcuts::Shortcut::sequencesFromString(plugin.shortcuts));
} }
return qtrc("plugins", "Not defined"); return qtrc("plugins", "Not defined");