diff options
| author | Dana Olson | 2015-01-11 00:08:32 -0500 |
|---|---|---|
| committer | Dana Olson | 2015-01-11 00:08:32 -0500 |
| commit | 9bbc3f0c94bfdbaceb507e4ccaf388950d84d8f0 (patch) | |
| tree | 65aa3cf8e01a0238d9af337300316fdfbc22aeb0 /tools/editor/scene_tree_dock.cpp | |
| parent | d30f4e52f654a26e14223a6ef9a946cc6282c0db (diff) | |
| download | godot-9bbc3f0c94bfdbaceb507e4ccaf388950d84d8f0.tar.gz godot-9bbc3f0c94bfdbaceb507e4ccaf388950d84d8f0.tar.zst godot-9bbc3f0c94bfdbaceb507e4ccaf388950d84d8f0.zip | |
fix naming of duplicated nodes, closes #1161, adds separator character preferences
Diffstat (limited to '')
| -rw-r--r-- | tools/editor/scene_tree_dock.cpp | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/tools/editor/scene_tree_dock.cpp b/tools/editor/scene_tree_dock.cpp index f5d9e83bf..cff391357 100644 --- a/tools/editor/scene_tree_dock.cpp +++ b/tools/editor/scene_tree_dock.cpp @@ -100,6 +100,16 @@ Node* SceneTreeDock::instance(const String& p_file) { } +static String _get_name_num_separator() { + switch(EditorSettings::get_singleton()->get("scenetree_editor/duplicate_node_name_num_separator").operator int()) { + case 0: return ""; + case 1: return " "; + case 2: return "_"; + case 3: return "-"; + } + return " "; +} + void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) { current_option=p_tool; @@ -318,17 +328,21 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) { } int num=nums.to_int(); - if (num<2) - num=2; + if (num<1) + num=1; else num++; - name=name.substr(0,name.length()-nums.length()).strip_edges(); - String attempt=name+" "+itos(num); + String nnsep = _get_name_num_separator(); + name = name.substr(0,name.length()-nums.length()).strip_edges(); + if ( name.substr(name.length()-nnsep.length(),nnsep.length()) == nnsep) { + name = name.substr(0,name.length()-nnsep.length()); + } + String attempt = (name + nnsep + itos(num)).strip_edges(); while(parent->has_node(attempt)) { num++; - attempt=name+" "+itos(num); + attempt = (name + nnsep + itos(num)).strip_edges(); } dup->set_name(attempt); |
