Issue #707
The trick is to set the button oinside of statusItem
to send actions on both leftMouseUp
and rightMouseUp
.
Another thing to note is we use popUpMenu
on NSStatusItem
, although it is marked as deprecated on macOS 10.14. We can set menu
but that overrides left click.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 import Omniaprivate let statusItem = NSStatusBar .system.statusItem(withLength: NSStatusItem .squareLength)private let statusItemMenuHandler = MenuHandler ()func setupStatusMenu () { if let button = statusItem.button { button.image = NSImage (named: NSImage .Name ("statusMenuIcon" )) button.contentTintColor = NSColor .black button.action = #selector(statusMenuButtonTouched(_ :)) button.sendAction(on: [.leftMouseUp, .rightMouseUp]) statusItemMenuHandler.add(title: "About" , action: { NSWorkspace .shared.open (URL (string: "https://onmyway133.com/pushhero" )!) }) } } @objc private func statusMenuButtonTouched (_ sender: NSStatusBarButton) { guard let event = NSApp .currentEvent else { return } switch event.type { case .rightMouseUp: statusItem.popUpMenu(statusItemMenuHandler.menu) default : popover.toggle() } }
Updated at 2020-12-08 05:11:24