Fix handling of standard edit commands in context menu under Mac

Feed back standard commands like copy, paste into wxMenItem if possible.

This way commands that don't exist in the global menubar can still be
fed back eg when originating from a context menu.

See #18738.
This commit is contained in:
Stefan Csomor
2020-07-25 19:19:57 +02:00
committed by Vadim Zeitlin
parent 0157ea11a1
commit c5394cea63

View File

@@ -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