parent
6a600b1acd
commit
9d4bc8528e
1 changed files with 18 additions and 4 deletions
|
@ -131,6 +131,8 @@ void SceneTreeDock::_unhandled_key_input(Ref<InputEvent> p_event) {
|
||||||
_tool_selected(TOOL_ERASE, true);
|
_tool_selected(TOOL_ERASE, true);
|
||||||
} else if (ED_IS_SHORTCUT("scene_tree/copy_node_path", p_event)) {
|
} else if (ED_IS_SHORTCUT("scene_tree/copy_node_path", p_event)) {
|
||||||
_tool_selected(TOOL_COPY_NODE_PATH);
|
_tool_selected(TOOL_COPY_NODE_PATH);
|
||||||
|
} else if (ED_IS_SHORTCUT("scene_tree/toggle_unique_name", p_event)) {
|
||||||
|
_tool_selected(TOOL_TOGGLE_SCENE_UNIQUE_NAME);
|
||||||
} else if (ED_IS_SHORTCUT("scene_tree/delete", p_event)) {
|
} else if (ED_IS_SHORTCUT("scene_tree/delete", p_event)) {
|
||||||
_tool_selected(TOOL_ERASE);
|
_tool_selected(TOOL_ERASE);
|
||||||
}
|
}
|
||||||
|
@ -1134,6 +1136,14 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
|
||||||
if (first_selected == nullptr) {
|
if (first_selected == nullptr) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (first_selected->get() == EditorNode::get_singleton()->get_edited_scene()) {
|
||||||
|
// Exclude Root Node. It should never be unique name in its own scene!
|
||||||
|
editor_selection->remove_node(first_selected->get());
|
||||||
|
first_selected = editor_selection->get_selected_node_list().front();
|
||||||
|
if (first_selected == nullptr) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
bool enabling = !first_selected->get()->is_unique_name_in_owner();
|
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();
|
||||||
|
@ -2869,10 +2879,13 @@ void SceneTreeDock::_tree_rmb(const Vector2 &p_menu_pos) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (all_owned) {
|
if (all_owned) {
|
||||||
menu->add_icon_check_item(get_icon("SceneUniqueName", "EditorIcons"), TTR("Access as Scene Unique Name"), TOOL_TOGGLE_SCENE_UNIQUE_NAME);
|
// Group "toggle_unique_name" with "copy_node_path", if it is available.
|
||||||
// Checked based on `selection[0]` because `full_selection` has undesired ordering.
|
if (menu->get_item_index(TOOL_COPY_NODE_PATH) == -1) {
|
||||||
menu->set_item_checked(menu->get_item_index(TOOL_TOGGLE_SCENE_UNIQUE_NAME), selection[0]->is_unique_name_in_owner());
|
menu->add_separator();
|
||||||
menu->add_separator();
|
}
|
||||||
|
Node *node = full_selection[0];
|
||||||
|
menu->add_icon_shortcut(get_icon("SceneUniqueName", "EditorIcons"), ED_GET_SHORTCUT("scene_tree/toggle_unique_name"), TOOL_TOGGLE_SCENE_UNIQUE_NAME);
|
||||||
|
menu->set_item_text(menu->get_item_index(TOOL_TOGGLE_SCENE_UNIQUE_NAME), node->is_unique_name_in_owner() ? TTR("Revoke Unique Name") : TTR("Access as Unique Name"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3366,6 +3379,7 @@ SceneTreeDock::SceneTreeDock(EditorNode *p_editor, Node *p_scene_root, EditorSel
|
||||||
ED_SHORTCUT("scene_tree/merge_from_scene", TTR("Merge From Scene"));
|
ED_SHORTCUT("scene_tree/merge_from_scene", TTR("Merge From Scene"));
|
||||||
ED_SHORTCUT("scene_tree/save_branch_as_scene", TTR("Save Branch as Scene"));
|
ED_SHORTCUT("scene_tree/save_branch_as_scene", TTR("Save Branch as Scene"));
|
||||||
ED_SHORTCUT("scene_tree/copy_node_path", TTR("Copy Node Path"), KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_C);
|
ED_SHORTCUT("scene_tree/copy_node_path", TTR("Copy Node Path"), KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_C);
|
||||||
|
ED_SHORTCUT("scene_tree/toggle_unique_name", TTR("Toggle Access as Unique Name"));
|
||||||
ED_SHORTCUT("scene_tree/delete_no_confirm", TTR("Delete (No Confirm)"), KEY_MASK_SHIFT | KEY_DELETE);
|
ED_SHORTCUT("scene_tree/delete_no_confirm", TTR("Delete (No Confirm)"), KEY_MASK_SHIFT | KEY_DELETE);
|
||||||
ED_SHORTCUT("scene_tree/delete", TTR("Delete"), KEY_DELETE);
|
ED_SHORTCUT("scene_tree/delete", TTR("Delete"), KEY_DELETE);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue