summaryrefslogtreecommitdiffstats
path: root/scene/gui
diff options
context:
space:
mode:
authorYuri Sizov <yuris@humnom.net>2023-11-09 15:37:08 +0100
committerYuri Sizov <yuris@humnom.net>2023-11-09 17:12:41 +0100
commitedcad2ea88f35b2a3b9b30a8a56cdf5e3a0009ec (patch)
treee327c58b0943be63eb2a2a4896db2206349f9fcb /scene/gui
parentd1381bbca264794eb3ba470789217ab6f5c91d3f (diff)
downloadredot-engine-edcad2ea88f35b2a3b9b30a8a56cdf5e3a0009ec.tar.gz
Allow auto-generated node names in `PopupMenu::add_submenu_item`
Diffstat (limited to 'scene/gui')
-rw-r--r--scene/gui/popup_menu.cpp6
1 files changed, 5 insertions, 1 deletions
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<Texture2D> &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);