1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-21 14:57:09 +00:00

Remove toggling of unique names in subscenes

This commit is contained in:
Saracen
2023-10-15 05:58:19 +01:00
parent f497156e0b
commit 29c2615352
2 changed files with 25 additions and 2 deletions

View File

@@ -311,7 +311,7 @@ void SceneTreeEditor::_add_nodes(Node *p_node, TreeItem *p_parent) {
} }
if (p_node->is_unique_name_in_owner()) { if (p_node->is_unique_name_in_owner()) {
item->add_button(0, get_editor_theme_icon(SNAME("SceneUniqueName")), BUTTON_UNIQUE, false, vformat(TTR("This node can be accessed from within anywhere in the scene by preceding it with the '%s' prefix in a node path.\nClick to disable this."), UNIQUE_NODE_PREFIX)); item->add_button(0, get_editor_theme_icon(SNAME("SceneUniqueName")), BUTTON_UNIQUE, p_node->get_owner() != EditorNode::get_singleton()->get_edited_scene(), vformat(TTR("This node can be accessed from within anywhere in the scene by preceding it with the '%s' prefix in a node path.\nClick to disable this."), UNIQUE_NODE_PREFIX));
} }
int num_connections = p_node->get_persistent_signal_connection_count(); int num_connections = p_node->get_persistent_signal_connection_count();

View File

@@ -1158,9 +1158,25 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
return; return;
} }
} }
bool enabling = !first_selected->get()->is_unique_name_in_owner();
List<Node *> full_selection = editor_selection->get_full_selected_node_list(); List<Node *> full_selection = editor_selection->get_full_selected_node_list();
// Check if all the nodes for this operation are invalid, and if they are, pop up a dialog and end here.
bool all_nodes_owner_invalid = true;
for (Node *node : full_selection) {
if (node->get_owner() == get_tree()->get_edited_scene_root()) {
all_nodes_owner_invalid = false;
break;
}
}
if (all_nodes_owner_invalid) {
accept->set_text(TTR("Can't toggle unique name for nodes in subscene!"));
accept->popup_centered();
return;
}
bool enabling = !first_selected->get()->is_unique_name_in_owner();
EditorUndoRedoManager *undo_redo = EditorUndoRedoManager::get_singleton(); EditorUndoRedoManager *undo_redo = EditorUndoRedoManager::get_singleton();
if (enabling) { if (enabling) {
@@ -1172,6 +1188,10 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
if (node->is_unique_name_in_owner()) { if (node->is_unique_name_in_owner()) {
continue; continue;
} }
if (node->get_owner() != get_tree()->get_edited_scene_root()) {
continue;
}
StringName name = node->get_name(); StringName name = node->get_name();
if (new_unique_names.find(name) != -1 || get_tree()->get_edited_scene_root()->get_node_or_null(UNIQUE_NODE_PREFIX + String(name)) != nullptr) { if (new_unique_names.find(name) != -1 || get_tree()->get_edited_scene_root()->get_node_or_null(UNIQUE_NODE_PREFIX + String(name)) != nullptr) {
cant_be_set_unique_names.push_back(name); cant_be_set_unique_names.push_back(name);
@@ -1205,6 +1225,9 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
if (!node->is_unique_name_in_owner()) { if (!node->is_unique_name_in_owner()) {
continue; continue;
} }
if (node->get_owner() != get_tree()->get_edited_scene_root()) {
continue;
}
undo_redo->add_do_method(node, "set_unique_name_in_owner", false); undo_redo->add_do_method(node, "set_unique_name_in_owner", false);
undo_redo->add_undo_method(node, "set_unique_name_in_owner", true); undo_redo->add_undo_method(node, "set_unique_name_in_owner", true);
} }