diff --git a/src/osx/cocoa/nonownedwnd.mm b/src/osx/cocoa/nonownedwnd.mm index d9702e6682..35c86fcf3b 100644 --- a/src/osx/cocoa/nonownedwnd.mm +++ b/src/osx/cocoa/nonownedwnd.mm @@ -335,8 +335,20 @@ extern int wxOSXGetIdFromSelector(SEL action ); return self; } -- (BOOL) triggerMenu:(SEL) action +- (BOOL) triggerMenu:(SEL) action sender:(id)sender { + // feed back into menu item, if it is ours + if ( [sender isKindOfClass:wxNSMenuItem.class] ) + { + wxNSMenuItem* nsMenuItem = (wxNSMenuItem*) sender; + wxMenuItemImpl* impl = [nsMenuItem implementation]; + if ( impl ) + { + wxMenuItem* menuitem = impl->GetWXPeer(); + return menuitem->GetMenu()->HandleCommandProcess(menuitem); + } + } + // otherwise feed back command into common menubar wxMenuBar* mbar = wxMenuBar::MacGetInstalledMenuBar(); if ( mbar ) { @@ -369,43 +381,43 @@ extern int wxOSXGetIdFromSelector(SEL action ); - (void)undo:(id)sender { wxUnusedVar(sender); - [self triggerMenu:_cmd]; + [self triggerMenu:_cmd sender:sender]; } - (void)redo:(id)sender { wxUnusedVar(sender); - [self triggerMenu:_cmd]; + [self triggerMenu:_cmd sender:sender]; } - (void)cut:(id)sender { wxUnusedVar(sender); - [self triggerMenu:_cmd]; + [self triggerMenu:_cmd sender:sender]; } - (void)copy:(id)sender { wxUnusedVar(sender); - [self triggerMenu:_cmd]; + [self triggerMenu:_cmd sender:sender]; } - (void)paste:(id)sender { wxUnusedVar(sender); - [self triggerMenu:_cmd]; + [self triggerMenu:_cmd sender:sender]; } - (void)delete:(id)sender { wxUnusedVar(sender); - [self triggerMenu:_cmd]; + [self triggerMenu:_cmd sender:sender]; } - (void)selectAll:(id)sender { wxUnusedVar(sender); - [self triggerMenu:_cmd]; + [self triggerMenu:_cmd sender:sender]; } - (void)windowDidMiniaturize:(NSNotification *)notification