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:
committed by
Vadim Zeitlin
parent
0157ea11a1
commit
c5394cea63
@@ -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
|
||||
|
Reference in New Issue
Block a user