|
@@ -373,12 +373,7 @@ int NativeMenuMacOS::add_submenu_item(const RID &p_rid, const String &p_label, c
|
|
menu_item = [md->menu insertItemWithTitle:[NSString stringWithUTF8String:p_label.utf8().get_data()] action:nil keyEquivalent:@"" atIndex:p_index];
|
|
menu_item = [md->menu insertItemWithTitle:[NSString stringWithUTF8String:p_label.utf8().get_data()] action:nil keyEquivalent:@"" atIndex:p_index];
|
|
|
|
|
|
GodotMenuItem *obj = [[GodotMenuItem alloc] init];
|
|
GodotMenuItem *obj = [[GodotMenuItem alloc] init];
|
|
- obj->callback = Callable();
|
|
|
|
- obj->key_callback = Callable();
|
|
|
|
obj->meta = p_tag;
|
|
obj->meta = p_tag;
|
|
- obj->checkable_type = CHECKABLE_TYPE_NONE;
|
|
|
|
- obj->max_states = 0;
|
|
|
|
- obj->state = 0;
|
|
|
|
[menu_item setRepresentedObject:obj];
|
|
[menu_item setRepresentedObject:obj];
|
|
|
|
|
|
[md_sub->menu setTitle:[NSString stringWithUTF8String:p_label.utf8().get_data()]];
|
|
[md_sub->menu setTitle:[NSString stringWithUTF8String:p_label.utf8().get_data()]];
|
|
@@ -417,9 +412,6 @@ int NativeMenuMacOS::add_item(const RID &p_rid, const String &p_label, const Cal
|
|
obj->callback = p_callback;
|
|
obj->callback = p_callback;
|
|
obj->key_callback = p_key_callback;
|
|
obj->key_callback = p_key_callback;
|
|
obj->meta = p_tag;
|
|
obj->meta = p_tag;
|
|
- obj->checkable_type = CHECKABLE_TYPE_NONE;
|
|
|
|
- obj->max_states = 0;
|
|
|
|
- obj->state = 0;
|
|
|
|
[menu_item setKeyEquivalentModifierMask:KeyMappingMacOS::keycode_get_native_mask(p_accel)];
|
|
[menu_item setKeyEquivalentModifierMask:KeyMappingMacOS::keycode_get_native_mask(p_accel)];
|
|
[menu_item setRepresentedObject:obj];
|
|
[menu_item setRepresentedObject:obj];
|
|
}
|
|
}
|
|
@@ -438,8 +430,6 @@ int NativeMenuMacOS::add_check_item(const RID &p_rid, const String &p_label, con
|
|
obj->key_callback = p_key_callback;
|
|
obj->key_callback = p_key_callback;
|
|
obj->meta = p_tag;
|
|
obj->meta = p_tag;
|
|
obj->checkable_type = CHECKABLE_TYPE_CHECK_BOX;
|
|
obj->checkable_type = CHECKABLE_TYPE_CHECK_BOX;
|
|
- obj->max_states = 0;
|
|
|
|
- obj->state = 0;
|
|
|
|
[menu_item setKeyEquivalentModifierMask:KeyMappingMacOS::keycode_get_native_mask(p_accel)];
|
|
[menu_item setKeyEquivalentModifierMask:KeyMappingMacOS::keycode_get_native_mask(p_accel)];
|
|
[menu_item setRepresentedObject:obj];
|
|
[menu_item setRepresentedObject:obj];
|
|
}
|
|
}
|
|
@@ -457,9 +447,6 @@ int NativeMenuMacOS::add_icon_item(const RID &p_rid, const Ref<Texture2D> &p_ico
|
|
obj->callback = p_callback;
|
|
obj->callback = p_callback;
|
|
obj->key_callback = p_key_callback;
|
|
obj->key_callback = p_key_callback;
|
|
obj->meta = p_tag;
|
|
obj->meta = p_tag;
|
|
- obj->checkable_type = CHECKABLE_TYPE_NONE;
|
|
|
|
- obj->max_states = 0;
|
|
|
|
- obj->state = 0;
|
|
|
|
DisplayServerMacOS *ds = (DisplayServerMacOS *)DisplayServer::get_singleton();
|
|
DisplayServerMacOS *ds = (DisplayServerMacOS *)DisplayServer::get_singleton();
|
|
if (ds && p_icon.is_valid() && p_icon->get_width() > 0 && p_icon->get_height() > 0 && p_icon->get_image().is_valid()) {
|
|
if (ds && p_icon.is_valid() && p_icon->get_width() > 0 && p_icon->get_height() > 0 && p_icon->get_image().is_valid()) {
|
|
obj->img = p_icon->get_image();
|
|
obj->img = p_icon->get_image();
|
|
@@ -489,8 +476,6 @@ int NativeMenuMacOS::add_icon_check_item(const RID &p_rid, const Ref<Texture2D>
|
|
obj->key_callback = p_key_callback;
|
|
obj->key_callback = p_key_callback;
|
|
obj->meta = p_tag;
|
|
obj->meta = p_tag;
|
|
obj->checkable_type = CHECKABLE_TYPE_CHECK_BOX;
|
|
obj->checkable_type = CHECKABLE_TYPE_CHECK_BOX;
|
|
- obj->max_states = 0;
|
|
|
|
- obj->state = 0;
|
|
|
|
DisplayServerMacOS *ds = (DisplayServerMacOS *)DisplayServer::get_singleton();
|
|
DisplayServerMacOS *ds = (DisplayServerMacOS *)DisplayServer::get_singleton();
|
|
if (ds && p_icon.is_valid() && p_icon->get_width() > 0 && p_icon->get_height() > 0 && p_icon->get_image().is_valid()) {
|
|
if (ds && p_icon.is_valid() && p_icon->get_width() > 0 && p_icon->get_height() > 0 && p_icon->get_image().is_valid()) {
|
|
obj->img = p_icon->get_image();
|
|
obj->img = p_icon->get_image();
|
|
@@ -520,8 +505,6 @@ int NativeMenuMacOS::add_radio_check_item(const RID &p_rid, const String &p_labe
|
|
obj->key_callback = p_key_callback;
|
|
obj->key_callback = p_key_callback;
|
|
obj->meta = p_tag;
|
|
obj->meta = p_tag;
|
|
obj->checkable_type = CHECKABLE_TYPE_RADIO_BUTTON;
|
|
obj->checkable_type = CHECKABLE_TYPE_RADIO_BUTTON;
|
|
- obj->max_states = 0;
|
|
|
|
- obj->state = 0;
|
|
|
|
[menu_item setKeyEquivalentModifierMask:KeyMappingMacOS::keycode_get_native_mask(p_accel)];
|
|
[menu_item setKeyEquivalentModifierMask:KeyMappingMacOS::keycode_get_native_mask(p_accel)];
|
|
[menu_item setRepresentedObject:obj];
|
|
[menu_item setRepresentedObject:obj];
|
|
}
|
|
}
|
|
@@ -540,8 +523,6 @@ int NativeMenuMacOS::add_icon_radio_check_item(const RID &p_rid, const Ref<Textu
|
|
obj->key_callback = p_key_callback;
|
|
obj->key_callback = p_key_callback;
|
|
obj->meta = p_tag;
|
|
obj->meta = p_tag;
|
|
obj->checkable_type = CHECKABLE_TYPE_RADIO_BUTTON;
|
|
obj->checkable_type = CHECKABLE_TYPE_RADIO_BUTTON;
|
|
- obj->max_states = 0;
|
|
|
|
- obj->state = 0;
|
|
|
|
DisplayServerMacOS *ds = (DisplayServerMacOS *)DisplayServer::get_singleton();
|
|
DisplayServerMacOS *ds = (DisplayServerMacOS *)DisplayServer::get_singleton();
|
|
if (ds && p_icon.is_valid() && p_icon->get_width() > 0 && p_icon->get_height() > 0 && p_icon->get_image().is_valid()) {
|
|
if (ds && p_icon.is_valid() && p_icon->get_width() > 0 && p_icon->get_height() > 0 && p_icon->get_image().is_valid()) {
|
|
obj->img = p_icon->get_image();
|
|
obj->img = p_icon->get_image();
|
|
@@ -570,7 +551,6 @@ int NativeMenuMacOS::add_multistate_item(const RID &p_rid, const String &p_label
|
|
obj->callback = p_callback;
|
|
obj->callback = p_callback;
|
|
obj->key_callback = p_key_callback;
|
|
obj->key_callback = p_key_callback;
|
|
obj->meta = p_tag;
|
|
obj->meta = p_tag;
|
|
- obj->checkable_type = CHECKABLE_TYPE_NONE;
|
|
|
|
obj->max_states = p_max_states;
|
|
obj->max_states = p_max_states;
|
|
obj->state = p_default_state;
|
|
obj->state = p_default_state;
|
|
[menu_item setKeyEquivalentModifierMask:KeyMappingMacOS::keycode_get_native_mask(p_accel)];
|
|
[menu_item setKeyEquivalentModifierMask:KeyMappingMacOS::keycode_get_native_mask(p_accel)];
|
|
@@ -640,7 +620,10 @@ bool NativeMenuMacOS::is_item_checked(const RID &p_rid, int p_idx) const {
|
|
ERR_FAIL_COND_V(p_idx >= item_start + item_count, false);
|
|
ERR_FAIL_COND_V(p_idx >= item_start + item_count, false);
|
|
const NSMenuItem *menu_item = [md->menu itemAtIndex:p_idx];
|
|
const NSMenuItem *menu_item = [md->menu itemAtIndex:p_idx];
|
|
if (menu_item) {
|
|
if (menu_item) {
|
|
- return ([menu_item state] == NSControlStateValueOn);
|
|
|
|
|
|
+ const GodotMenuItem *obj = [menu_item representedObject];
|
|
|
|
+ if (obj) {
|
|
|
|
+ return obj->checked;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
@@ -958,10 +941,14 @@ void NativeMenuMacOS::set_item_checked(const RID &p_rid, int p_idx, bool p_check
|
|
ERR_FAIL_COND(p_idx >= item_start + item_count);
|
|
ERR_FAIL_COND(p_idx >= item_start + item_count);
|
|
NSMenuItem *menu_item = [md->menu itemAtIndex:p_idx];
|
|
NSMenuItem *menu_item = [md->menu itemAtIndex:p_idx];
|
|
if (menu_item) {
|
|
if (menu_item) {
|
|
- if (p_checked) {
|
|
|
|
- [menu_item setState:NSControlStateValueOn];
|
|
|
|
- } else {
|
|
|
|
- [menu_item setState:NSControlStateValueOff];
|
|
|
|
|
|
+ GodotMenuItem *obj = [menu_item representedObject];
|
|
|
|
+ if (obj) {
|
|
|
|
+ obj->checked = p_checked;
|
|
|
|
+ if (p_checked) {
|
|
|
|
+ [menu_item setState:NSControlStateValueOn];
|
|
|
|
+ } else {
|
|
|
|
+ [menu_item setState:NSControlStateValueOff];
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|