How to update NSMenu while it's open?

cocoa, nsmenu, nsmenuitem, nsstatusbar, objective-c

Solution

Updating the menu items in `NSEventTrackingRunLoopMode` solved this issue.

Problem

I have a NSMenu with dynamically added NSMenuItems. The NSMenu is not refreshing properly while it's kept open. I am calling NSMenu update method in `NSEventTrackingRunLoopModes`. I have implemented following methods to update NSMenu. ``` - (void)menuNeedsUpdate:(NSMenu *)menu { for (NSInteger index = 0; index < count; index++) [self menu:menu updateItem:[menu itemAtIndex:index] atIndex:index shouldCancel:NO]; } - (BOOL)menu:(NSMenu *)menu updateItem:(NSMenuItem *)item atIndex:(NSInteger)index shouldCancel:(BOOL)shouldCancel` - (NSInteger)numberOfItemsInMenu:(NSMenu *)menu ```

Original source