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

On Apr 20, 2012, at 11:32 AM, 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?
> 
> Best regards,
> VinPai
_______________________________________________

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

Reply via email to