Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Objective-C: NSStatusBar right and left click

how to detect left or right click on statusbar icon, and than make some action, depending on which mouse button (trackpad) was clicked?

I use:

  _statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength] retain];
  [_statusItem setMenu:menu];
  [_statusItem setHighlightMode:YES];

To generate statusBar icon

like image 323
Matt Harasymczuk Avatar asked Dec 10 '09 06:12

Matt Harasymczuk


1 Answers

To detect the mouse buttons that are currently pressed, you can use [NSEvent pressedMouseButtons].

To detect the status bar icon being clicked, you can detect the menu appearing. Just before a menu opens, it sends a menuWillOpen: message to its delegate (if it has one). So implement something like this:

- (void)menuWillOpen:(NSMenu *)menu
{
  NSLog(@"%d",[NSEvent pressedMouseButtons]);
}

You will also need to set the delegate for the menu, for example by

[menu setDelegate:self];
like image 50
Nick Moore Avatar answered Sep 30 '22 21:09

Nick Moore