diff --git a/Ports/Logic/StatusBarController.swift b/Ports/Logic/StatusBarController.swift index e8b01ad..e369257 100644 --- a/Ports/Logic/StatusBarController.swift +++ b/Ports/Logic/StatusBarController.swift @@ -31,20 +31,12 @@ class StatusBarController: NSObject, NSPopoverDelegate { statusBarButton.image = NSImage(named: "MenuBarIcon") statusBarButton.image?.size = NSSize(width: 18.0, height: 18.0) statusBarButton.image?.isTemplate = true - statusBarButton.setButtonType(.onOff) - - NSEvent.addLocalMonitorForEvents(matching: .leftMouseDown) { [weak self] event in - if event.window == self?.statusItem.button?.window { - self?.togglePopover(sender: statusBarButton) - return nil - } - - return event - } + statusBarButton.action = #selector(togglePopover) + statusBarButton.target = self } } - @objc func togglePopover(sender: AnyObject) { + @objc func togglePopover(_ sender: AnyObject) { if popover.isShown { hidePopover(sender) } else { diff --git a/Ports/Views/MainView.swift b/Ports/Views/MainView.swift index 6cc9443..af3240e 100644 --- a/Ports/Views/MainView.swift +++ b/Ports/Views/MainView.swift @@ -31,18 +31,18 @@ struct MainView: View { .listStyle(.sidebar) HStack { Spacer() - MenuButton( - label: Image(systemName: "gearshape.fill"), - content: { - Button(localizedString("openWebsite")) { - NSWorkspace.shared.open(URL(string: "https://chaosspace.de/ports?utm_source=portsapp")!) - } - Button(localizedString("quit")) { - exit(0) - } - }) - .frame(width: 20, height: 20) - .menuButtonStyle(BorderlessButtonMenuButtonStyle()) + Menu { + Button(localizedString("openWebsite")) { + NSWorkspace.shared.open(URL(string: "https://chaosspace.de/ports?utm_source=portsapp")!) + } + Button(localizedString("quit")) { + exit(0) + } + } label: { + Image(systemName: "gearshape.fill") + } + .menuStyle(.borderlessButton) + .frame(width: 20, height: 20) .padding(EdgeInsets(top: 0, leading: 10, bottom: 10, trailing: 10)) } } @@ -61,12 +61,12 @@ protocol MainViewModelType: ObservableObject { } class MainViewModel: ObservableObject, MainViewModelType { - @ObservedObject var processManager: ProcessManager + private let processManager: ProcessManager @Published var processList: ProcessList init(processManager: ProcessManager) { self.processManager = processManager - self.processList = ProcessList(lastUpdated: Date(), processes: []) + self.processList = processManager.processList processManager.$processList.assign(to: &$processList) }