1
0
mirror of https://github.com/godotengine/godot.git synced 2025-12-30 18:30:54 +00:00

[macOS] Add option for renaming system menus.

This commit is contained in:
Pāvels Nadtočajevs
2025-07-30 20:07:36 +03:00
parent 79603b2f28
commit 4fc07a8edb
8 changed files with 113 additions and 4 deletions

View File

@@ -89,6 +89,9 @@ public:
NSMenu *get_native_menu_handle(const RID &p_rid);
virtual String get_system_menu_text(SystemMenus p_menu_id) const override;
virtual void set_system_menu_text(SystemMenus p_menu_id, const String &p_name) override;
virtual Size2 get_size(const RID &p_rid) const override;
virtual void popup(const RID &p_rid, const Vector2i &p_position) override;

View File

@@ -238,6 +238,47 @@ RID NativeMenuMacOS::get_system_menu(SystemMenus p_menu_id) const {
}
}
String NativeMenuMacOS::get_system_menu_text(SystemMenus p_menu_id) const {
NSMenu *menu = nullptr;
switch (p_menu_id) {
case WINDOW_MENU_ID: {
menu = window_menu_ns;
} break;
case HELP_MENU_ID: {
menu = help_menu_ns;
} break;
default:
return String();
}
if (!menu) {
return String();
}
return String::utf8([[menu title] UTF8String]);
}
void NativeMenuMacOS::set_system_menu_text(SystemMenus p_menu_id, const String &p_name) {
NSMenu *menu = nullptr;
switch (p_menu_id) {
case WINDOW_MENU_ID: {
menu = window_menu_ns;
} break;
case HELP_MENU_ID: {
menu = help_menu_ns;
} break;
default:
return;
}
if (!menu || !main_menu_ns) {
return;
}
[menu setTitle:[NSString stringWithUTF8String:p_name.utf8().get_data()]];
int idx = [main_menu_ns indexOfItemWithSubmenu:(NSMenu *)menu];
NSMenuItem *menu_item = [main_menu_ns itemAtIndex:idx];
if (menu_item) {
[menu_item setTitle:[NSString stringWithUTF8String:p_name.utf8().get_data()]];
}
}
RID NativeMenuMacOS::create_menu() {
MenuData *md = memnew(MenuData);
md->menu = [[NSMenu alloc] initWithTitle:@""];