Fix rename animation in SpriteFramesEditor/AnimationNodeStateMachineEditor
When the name suffix grows, the old name is used if it is obtained first.
Fix the case where the following error message would appear when renaming
an animation.
```
ERROR: Animation '' doesn't exist.
at: get_frame_count (scene/resources/sprite_frames.cpp:71)
```
(cherry picked from commit e9cd29cf22
)
This commit is contained in:
parent
965ea011a0
commit
52d56d806d
|
@ -1507,6 +1507,10 @@ void AnimationNodeStateMachineEditor::_name_edited(const String &p_text) {
|
||||||
int base = 1;
|
int base = 1;
|
||||||
String name = base_name;
|
String name = base_name;
|
||||||
while (state_machine->has_node(name)) {
|
while (state_machine->has_node(name)) {
|
||||||
|
if (name == prev_name) {
|
||||||
|
name_edit_popup->hide(); // The old name wins, the name doesn't change, just hide the popup.
|
||||||
|
return;
|
||||||
|
}
|
||||||
base++;
|
base++;
|
||||||
name = base_name + " " + itos(base);
|
name = base_name + " " + itos(base);
|
||||||
}
|
}
|
||||||
|
|
|
@ -948,13 +948,16 @@ void SpriteFramesEditor::_animation_name_edited() {
|
||||||
String name = new_name;
|
String name = new_name;
|
||||||
int counter = 0;
|
int counter = 0;
|
||||||
while (frames->has_animation(name)) {
|
while (frames->has_animation(name)) {
|
||||||
|
if (name == String(edited_anim)) {
|
||||||
|
edited->set_text(0, name); // The name didn't change, just updated the column text to name.
|
||||||
|
return;
|
||||||
|
}
|
||||||
counter++;
|
counter++;
|
||||||
name = new_name + "_" + itos(counter);
|
name = new_name + "_" + itos(counter);
|
||||||
}
|
}
|
||||||
|
|
||||||
EditorUndoRedoManager *undo_redo = EditorUndoRedoManager::get_singleton();
|
EditorUndoRedoManager *undo_redo = EditorUndoRedoManager::get_singleton();
|
||||||
undo_redo->create_action(TTR("Rename Animation"), UndoRedo::MERGE_DISABLE, EditorNode::get_singleton()->get_edited_scene());
|
undo_redo->create_action(TTR("Rename Animation"), UndoRedo::MERGE_DISABLE, EditorNode::get_singleton()->get_edited_scene());
|
||||||
_rename_node_animation(undo_redo, false, edited_anim, "", "");
|
|
||||||
undo_redo->add_do_method(frames.ptr(), "rename_animation", edited_anim, name);
|
undo_redo->add_do_method(frames.ptr(), "rename_animation", edited_anim, name);
|
||||||
undo_redo->add_undo_method(frames.ptr(), "rename_animation", name, edited_anim);
|
undo_redo->add_undo_method(frames.ptr(), "rename_animation", name, edited_anim);
|
||||||
_rename_node_animation(undo_redo, false, edited_anim, name, name);
|
_rename_node_animation(undo_redo, false, edited_anim, name, name);
|
||||||
|
|
Loading…
Reference in New Issue