Fix issue of AnimationPlayer hiding bezier editor when re-selecting it

Co-authored-by: Kasper Arnklit Frandsen <kasper.arnklit@gmail.com>
This commit is contained in:
Mikael Hermansson 2025-03-19 14:44:31 +01:00
parent d61cd9149a
commit c33b09ed19

View file

@ -3934,7 +3934,7 @@ void AnimationTrackEditor::set_animation(const Ref<Animation> &p_anim, bool p_re
marker_edit->set_animation(p_anim, read_only);
marker_edit->set_play_position(timeline->get_play_position());
_cancel_bezier_edit();
_check_bezier_exist();
_update_tracks();
if (animation.is_valid()) {
@ -3963,7 +3963,14 @@ void AnimationTrackEditor::set_animation(const Ref<Animation> &p_anim, bool p_re
}
}
_check_bezier_exist();
if (bezier_edit->is_visible()) {
for (int i = 0; i < animation->get_track_count(); ++i) {
if (animation->track_get_type(i) == Animation::TrackType::TYPE_BEZIER) {
_bezier_edit(i);
break;
}
}
}
} else {
hscroll->hide();
edit->set_disabled(true);
@ -3984,10 +3991,12 @@ void AnimationTrackEditor::set_animation(const Ref<Animation> &p_anim, bool p_re
void AnimationTrackEditor::_check_bezier_exist() {
bool is_exist = false;
for (int i = 0; i < animation->get_track_count(); i++) {
if (animation->track_get_type(i) == Animation::TrackType::TYPE_BEZIER) {
is_exist = true;
break;
if (animation.is_valid()) {
for (int i = 0; i < animation->get_track_count(); i++) {
if (animation->track_get_type(i) == Animation::TrackType::TYPE_BEZIER) {
is_exist = true;
break;
}
}
}
if (is_exist) {