On Apr 21, 2012, at 3:14 AM, Ken Thomases wrote: > On Apr 20, 2012, at 1:32 PM, vinayak pai wrote: > >> Yes. I am facing the same problem. I am updating the menu in >> performSelectorOnMainThread. If the menu is kept open without any >> event then there is menu refreshing issue ie. sometimes some items >> will be shown twice. When I move the mouse over items then it will >> update. But, when the menu is open and mouse is still then the menu >> won't update. Is there a way to update the menu while it's open >> without any mouse movement like System WiFi menu? > > I'm not sure. If menus are shown twice, then I suspect a synchronization bug > in your code. > > You can try posting an application-defined event (NSEvent of type > NSApplicationDefined) to the event queue after you've changed the menus.
(Resending this, since it didn't appear to go through before) Yes. As I answered before, you have to get things scheduled in the right runloop mode. But once you do, it's quite easy: - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { NSStatusItem *item = [[[NSStatusBar systemStatusBar] statusItemWithLength:24] retain]; [item setImage:[NSImage imageNamed:NSImageNameApplicationIcon]]; [item setEnabled:YES]; NSMenu *m = [[NSMenu alloc] init]; [item setMenu:m]; NSTimer *t = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(updateMenu:) userInfo:m repeats:YES]; [[NSRunLoop currentRunLoop] addTimer:t forMode:NSDefaultRunLoopMode]; [[NSRunLoop currentRunLoop] addTimer:t forMode:NSEventTrackingRunLoopMode]; } - (void)updateMenu:(NSTimer *)t { NSMenu *m = [t userInfo]; NSString *s = [[NSDate date] description]; NSMenuItem *i = [[NSMenuItem alloc] initWithTitle:s action:nil keyEquivalent:@""]; [m addItem:i]; [m update]; } Run that, open the poorly-iconed status item, and don't touch your mouse. Yes, this code is terrible and leaks and all that. It's just to illustrate the point. Dave _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com