Don't delay the action/target part, write a wrapper function and delay that:
- (void)mouseUp:(NSEvent*)event
{
UNUSED_VAR(event);
NSMenuItem* item = [self enclosingMenuItem];
NSMenu* menu = [item menu];
// On mouseUp, we want to dismiss the menu being tracked:
[menu cancelTracking];
[self performSelector:@selector(delayedSendAction:) withObject:item
afterDelay:0];
}
- (void)delayedSendAction: (NSMenuItem *)item
{
// Then send the action to the target:
SEL act = [item action];
id targ = [item target];
if(act != nil && targ != nil)
// [NSApp sendAction:act to:targ from:item];
// Temporarily sending the About menu item so it'll fire the About box:
[NSApp sendAction:act to:targ from:[menu itemAtIndex:0]];
// Copied from MenuItemView sample project. I don't think this is necessary:
// [self setNeedsDisplay:YES];
}
On May 29, 2013, at 4:34 PM, Steve Mills wrote:
> On May 29, 2013, at 18:06:45, Lee Ann Rucker <[email protected]>
> wrote:
>
>> Use performSelector:withObject:afterDelay:0 to push your response to the end
>> of the run loop, giving the UI a chance to update first. It's what I do when
>> a button (etc) is going to trigger something that won't be instantaneous,
>> where the button shouldn't keep showing in the pressed state while it
>> happens.
>
> Good idea, but I need to send the 3rd parameter; the selector, the target,
> and the sender. I can't do that with performSelector:withObject:afterDelay:.
>
> --
> Steve Mills
> office: 952-818-3871
> home: 952-401-6255
> cell: 612-803-6157
>
>
>
> _______________________________________________
>
> Cocoa-dev mailing list ([email protected])
>
> 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/lrucker%40vmware.com
>
> This email sent to [email protected]
_______________________________________________
Cocoa-dev mailing list ([email protected])
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 [email protected]