From cf74dc5cc2c5a175e0e1743c84f27eeaf8e2b01f Mon Sep 17 00:00:00 2001 From: Maarten Billemont Date: Tue, 19 May 2020 13:28:23 -0400 Subject: [PATCH] Updated NSMenu API. --- .../Source/Mac/Base.lproj/MainMenu.xib | 6 ++--- platform-darwin/Source/Mac/MPMacAppDelegate.h | 4 +-- platform-darwin/Source/Mac/MPMacAppDelegate.m | 26 +++++++++---------- 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/platform-darwin/Source/Mac/Base.lproj/MainMenu.xib b/platform-darwin/Source/Mac/Base.lproj/MainMenu.xib index f5b3d1cc..02a42378 100644 --- a/platform-darwin/Source/Mac/Base.lproj/MainMenu.xib +++ b/platform-darwin/Source/Mac/Base.lproj/MainMenu.xib @@ -12,9 +12,6 @@ - - - @@ -241,6 +238,9 @@ + + + diff --git a/platform-darwin/Source/Mac/MPMacAppDelegate.h b/platform-darwin/Source/Mac/MPMacAppDelegate.h index 7096953b..8de27882 100644 --- a/platform-darwin/Source/Mac/MPMacAppDelegate.h +++ b/platform-darwin/Source/Mac/MPMacAppDelegate.h @@ -21,9 +21,9 @@ #import "MPSitesWindowController.h" #import "MPInitialWindowController.h" -@interface MPMacAppDelegate : MPAppDelegate_Shared +@interface MPMacAppDelegate : MPAppDelegate_Shared -@property(nonatomic, strong) NSStatusItem *statusView; +@property(nonatomic, strong) NSStatusItem *statusItem; @property(nonatomic, strong) MPSitesWindowController *sitesWindowController; @property(nonatomic, strong) MPInitialWindowController *initialWindowController; @property(nonatomic, weak) IBOutlet NSMenuItem *lockItem; diff --git a/platform-darwin/Source/Mac/MPMacAppDelegate.m b/platform-darwin/Source/Mac/MPMacAppDelegate.m index 1041210c..e3476140 100644 --- a/platform-darwin/Source/Mac/MPMacAppDelegate.m +++ b/platform-darwin/Source/Mac/MPMacAppDelegate.m @@ -158,12 +158,10 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven } forKeyPath:@"activeUser" options:0 context:nil]; // Status item. - self.statusView = [[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength]; - self.statusView.image = [NSImage imageNamed:@"menu-icon"]; - self.statusView.image.template = YES; - self.statusView.menu = self.statusMenu; - self.statusView.target = self; - self.statusView.action = @selector( showMenu ); + self.statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength]; + self.statusItem.menu = self.statusMenu; + self.statusItem.button.image = [NSImage imageNamed:@"menu-icon"]; + self.statusItem.button.image.template = YES; PearlAddNotificationObserver( NSPersistentStoreCoordinatorStoresWillChangeNotification, self.storeCoordinator, nil, ^(id self, NSNotification *note) { @@ -502,7 +500,7 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven - (IBAction)showPopup:(id)sender { - [self.statusView popUpStatusItemMenu:self.statusView.menu]; + [[self.statusItem button] performClick:sender]; } - (IBAction)showPasswordWindow:(id)sender { @@ -682,13 +680,6 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven [self updateMenuItems]; } -- (void)showMenu { - - [self updateMenuItems]; - - [self.statusView popUpStatusItemMenu:self.statusView.menu]; -} - - (void)updateMenuItems { MPUserEntity *activeUser = [self activeUserForMainThread]; @@ -743,6 +734,13 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven } } +#pragma mark - NSMenuDelegate + +- (void)menuNeedsUpdate:(NSMenu *)menu { + + [self updateMenuItems]; +} + #pragma mark - PearlConfigDelegate - (void)didUpdateConfigForKey:(SEL)configKey fromValue:(id)oldValue {