diff options
Diffstat (limited to 'osdep/mac/menu_bar.swift')
-rw-r--r-- | osdep/mac/menu_bar.swift | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/osdep/mac/menu_bar.swift b/osdep/mac/menu_bar.swift index 2ba04b0f33..6fa64b43ca 100644 --- a/osdep/mac/menu_bar.swift +++ b/osdep/mac/menu_bar.swift @@ -37,7 +37,6 @@ extension MenuBar { let command: String let url: String let commandSpecial: MenuKey? - var menuItem: MenuItem? var configs: [Config]? init( @@ -49,7 +48,6 @@ extension MenuBar { command: String = "", url: String = "", commandSpecial: MenuKey? = nil, - menuItem: MenuItem? = nil, configs: [Config]? = nil ) { self.name = name @@ -60,7 +58,6 @@ extension MenuBar { self.command = command self.url = url self.commandSpecial = commandSpecial - self.menuItem = menuItem self.configs = configs } } @@ -68,6 +65,7 @@ extension MenuBar { class MenuBar: NSObject { var menuConfigs: [Config] = [] + var dynamicMenuItems: [MenuKey:[MenuItem]] = [:] let appIcon: NSImage @objc override init() { @@ -250,15 +248,14 @@ class MenuBar: NSObject { let mainMenu = NSMenu(title: "MainMenu") NSApp.servicesMenu = NSMenu() - for (menuConfigIndex, menuConfig) in menuConfigs.enumerated() { + for menuConfig in menuConfigs { let menu = NSMenu(title: menuConfig.name) let item = MenuItem(title: menuConfig.name, action: nil, keyEquivalent: menuConfig.key) item.config = menuConfig mainMenu.addItem(item) mainMenu.setSubmenu(menu, for: item) - menuConfigs[menuConfigIndex].menuItem = item - for (subConfigIndex, subConfig) in (menuConfig.configs ?? []).enumerated() { + for subConfig in menuConfig.configs ?? [] { if subConfig.name == "Show log Fileā¦" && ProcessInfo.processInfo.environment["MPVBUNDLE"] != "true" { continue } @@ -271,11 +268,13 @@ class MenuBar: NSObject { subItem.keyEquivalentModifierMask = subConfig.modifiers subItem.config = subConfig menu.addItem(subItem) - menuConfigs[menuConfigIndex].configs?[subConfigIndex].menuItem = subItem if subConfig.name == "Services" { subItem.submenu = NSApp.servicesMenu } + if let cmd = subConfig.commandSpecial { + dynamicMenuItems[cmd] = (dynamicMenuItems[cmd] ?? []) + [subItem] + } } } } @@ -399,13 +398,8 @@ class MenuBar: NSObject { } func register(_ selector: Selector, key: MenuKey) { - for menuConfig in menuConfigs { - for subConfig in menuConfig.configs ?? [] { - if subConfig.commandSpecial == key { - subConfig.menuItem?.action = selector - return - } - } + for menuItem in dynamicMenuItems[key] ?? [] { + menuItem.action = selector } } } |