开发者

NSMenu doesn't start tracking

开发者 https://www.devze.com 2022-12-30 05:21 出处:网络
I have a little cocoa app which usually operates in the background (as agent). Sometimes I\'d like to be able to popup a contextmenu (no window or s.th. visible at this time).

I have a little cocoa app which usually operates in the background (as agent). Sometimes I'd like to be able to popup a contextmenu (no window or s.th. visible at this time).

As I'm only targetting Snow Leopard I tried this:

if (windows) {
       NSMenu *theMenu = [[[NSMenu alloc] initWithTitle:@"test"] autorelease];
       [theMenu setShowsStateColumn:NO];
       [theMenu setAutoenablesItems:NO];

           for (id item in windows) {

               NSString *labelText = @"some text";

               NSMenuItem *theMenuItem = [[[NSMenuItem alloc] initWithTitle:labelText
                                             action:@selector(menuItemSelected:)
                                               keyEquivalent:@""] autorelease]; 

               [theMenuItem setTarget:self];
               [theMenuItem setRepresentedObject:item];
               [theMenuItem setEnabled:YES];
               [theMenuItem setImage:icon];
               [theMenu addItem:theMenuItem];
           }

       [theMenu popUpMenuPositioningItem:nil atLocation:[NSEvent mouseLocation] inView:nil];

 }

The menu popsup perfectly but if I hover the items with the mouse cursor they don't highlight and I can't click them.

The menuItemSelected: method looks just like this:

-(IBAction)menuItemSelected:(id)sender {

}

Any idea what I'm doing wron开发者_开发问答g?


I suspect that the windowing system doesn't consider your application to be active, and thus doesn't send mouse events to the menu you've created.

As an experiment, try creating a dummy window before popping up the menu. I'd create an NSPanel, possibly with style NSNonActivatingPanelMask. makeKeyAndOrderFront: your window/panel, then pop up the menu and see what happens.

If this works, I'd stick with the approach and hide the window.

0

精彩评论

暂无评论...
验证码 换一张
取 消