[macOS] Fix crash when using system default menu shortcuts.

This commit is contained in:
bruvzg 2023-10-13 10:12:44 +03:00
parent b1371806ad
commit 6371cc3d69
No known key found for this signature in database
GPG key ID: 7960FCF39844EC38
2 changed files with 15 additions and 13 deletions

View file

@ -649,7 +649,7 @@ void DisplayServerMacOS::menu_callback(id p_sender) {
}
}
if (value->callback != Callable()) {
if (value->callback.is_valid()) {
MenuCall mc;
mc.tag = value->meta;
mc.callback = value->callback;

View file

@ -56,7 +56,7 @@
- (void)menu:(NSMenu *)menu willHighlightItem:(NSMenuItem *)item {
if (item) {
GodotMenuItem *value = [item representedObject];
if (value && value->hover_callback != Callable()) {
if (value && value->hover_callback.is_valid()) {
// If custom callback is set, use it.
value->hover_callback.call(value->meta);
}
@ -73,19 +73,21 @@
if (ev_modifiers == item_modifiers) {
GodotMenuItem *value = [menu_item representedObject];
if (value->key_callback != Callable()) {
// If custom callback is set, use it.
value->key_callback.call(value->meta);
} else {
// Otherwise redirect event to the engine.
if (DisplayServer::get_singleton()) {
[[[NSApplication sharedApplication] keyWindow] sendEvent:event];
if (value) {
if (value->key_callback.is_valid()) {
// If custom callback is set, use it.
value->key_callback.call(value->meta);
} else {
// Otherwise redirect event to the engine.
if (DisplayServer::get_singleton()) {
[[[NSApplication sharedApplication] keyWindow] sendEvent:event];
}
}
}
// Suppress default menu action.
*target = self;
*action = @selector(doNothing:);
// Suppress default menu action.
*target = self;
*action = @selector(doNothing:);
}
return YES;
}
}