From edcad2ea88f35b2a3b9b30a8a56cdf5e3a0009ec Mon Sep 17 00:00:00 2001 From: Yuri Sizov Date: Thu, 9 Nov 2023 15:37:08 +0100 Subject: Allow auto-generated node names in `PopupMenu::add_submenu_item` --- scene/gui/popup_menu.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'scene/gui') diff --git a/scene/gui/popup_menu.cpp b/scene/gui/popup_menu.cpp index 0cda27ec24..d6b8dd0202 100644 --- a/scene/gui/popup_menu.cpp +++ b/scene/gui/popup_menu.cpp @@ -1487,7 +1487,11 @@ void PopupMenu::add_icon_radio_check_shortcut(const Ref &p_icon, cons } void PopupMenu::add_submenu_item(const String &p_label, const String &p_submenu, int p_id) { - ERR_FAIL_COND_MSG(p_submenu.validate_node_name() != p_submenu, "Invalid node name for submenu, the following characters are not allowed:\n" + String::get_invalid_node_name_characters()); + String submenu_name_safe = p_submenu.replace("@", "_"); // Allow special characters for auto-generated names. + if (submenu_name_safe.validate_node_name() != submenu_name_safe) { + ERR_FAIL_MSG(vformat("Invalid node name '%s' for a submenu, the following characters are not allowed:\n%s", p_submenu, String::get_invalid_node_name_characters(true))); + } + Item item; item.text = p_label; item.xl_text = atr(p_label); -- cgit v1.2.3