Fix misaligned timeline indicator on the Bezier editor

This commit is contained in:
Michael Alexsander
2026-04-06 12:07:41 -03:00
parent ee713ccb7c
commit a511b46ae9
3 changed files with 24 additions and 14 deletions
+20 -14
View File
@@ -4130,7 +4130,7 @@ void AnimationTrackEditor::set_animation(const Ref<Animation> &p_anim, bool p_re
}
}
if (bezier_edit->is_visible()) {
if (bezier_mc->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);
@@ -4175,7 +4175,7 @@ void AnimationTrackEditor::_check_bezier_exist() {
if (is_exist) {
bezier_edit_icon->set_disabled(false);
} else {
if (bezier_edit->is_visible()) {
if (bezier_mc->is_visible()) {
_cancel_bezier_edit();
}
bezier_edit_icon->set_disabled(true);
@@ -5177,7 +5177,7 @@ void AnimationTrackEditor::resolve_insertion_offset(float &r_offset) const {
}
bool AnimationTrackEditor::is_bezier_editor_active() const {
return bezier_edit->is_visible();
return bezier_mc->is_visible();
}
bool AnimationTrackEditor::can_add_reset_key() const {
@@ -6534,7 +6534,7 @@ void AnimationTrackEditor::_scroll_input(const Ref<InputEvent> &p_event) {
}
void AnimationTrackEditor::_toggle_bezier_edit() {
if (bezier_edit->is_visible()) {
if (bezier_mc->is_visible()) {
_cancel_bezier_edit();
} else {
int track_count = animation->get_track_count();
@@ -6599,7 +6599,7 @@ void AnimationTrackEditor::_zoom_callback(float p_zoom_factor, Vector2 p_origin,
}
void AnimationTrackEditor::_cancel_bezier_edit() {
bezier_edit->hide();
bezier_mc->hide();
box_selection_container->show();
bezier_edit_icon->set_pressed(false);
auto_fit->show();
@@ -6611,7 +6611,7 @@ void AnimationTrackEditor::_bezier_edit(int p_for_track) {
bezier_edit->set_root(root);
bezier_edit->set_animation_and_track(animation, p_for_track, read_only);
box_selection_container->hide();
bezier_edit->show();
bezier_mc->show();
auto_fit->hide();
auto_fit_bezier->show();
// Search everything within the track and curve - edit it.
@@ -7437,21 +7437,21 @@ void AnimationTrackEditor::_edit_menu_pressed(int p_option) {
} break;
case EDIT_DUPLICATE_SELECTED_KEYS: {
if (bezier_edit->is_visible()) {
if (bezier_mc->is_visible()) {
bezier_edit->duplicate_selected_keys(-1.0, false);
break;
}
_anim_duplicate_keys(-1.0, false, -1.0);
} break;
case EDIT_CUT_KEYS: {
if (bezier_edit->is_visible()) {
if (bezier_mc->is_visible()) {
bezier_edit->copy_selected_keys(true);
break;
}
_anim_copy_keys(true);
} break;
case EDIT_COPY_KEYS: {
if (bezier_edit->is_visible()) {
if (bezier_mc->is_visible()) {
bezier_edit->copy_selected_keys(false);
break;
}
@@ -7560,7 +7560,7 @@ void AnimationTrackEditor::_edit_menu_pressed(int p_option) {
} break;
case EDIT_DELETE_SELECTION: {
if (bezier_edit->is_visible()) {
if (bezier_mc->is_visible()) {
bezier_edit->delete_selection();
break;
}
@@ -7905,7 +7905,7 @@ void AnimationTrackEditor::_auto_fit() {
void AnimationTrackEditor::_auto_fit_bezier() {
timeline->auto_fit();
if (bezier_edit->is_visible()) {
if (bezier_mc->is_visible()) {
bezier_edit->auto_fit_vertically();
}
}
@@ -7987,6 +7987,8 @@ void AnimationTrackEditor::_update_timeline_margins() {
timeline_mc->add_theme_constant_override(SNAME("margin_left"), margin_left);
timeline_mc->add_theme_constant_override(SNAME("margin_right"), margin_right);
bezier_mc->add_theme_constant_override(SNAME("margin_left"), margin_left);
}
void AnimationTrackEditor::_add_animation_player() {
@@ -8189,12 +8191,16 @@ AnimationTrackEditor::AnimationTrackEditor() {
box_selection_container->set_clip_contents(true);
timeline_vbox->add_child(box_selection_container);
bezier_mc = memnew(MarginContainer);
bezier_mc->set_v_size_flags(SIZE_EXPAND_FILL);
bezier_mc->set_theme_type_variation("AnimationBezierMargin");
timeline_vbox->add_child(bezier_mc);
bezier_mc->hide();
bezier_edit = memnew(AnimationBezierTrackEdit);
timeline_vbox->add_child(bezier_edit);
bezier_mc->add_child(bezier_edit);
bezier_edit->set_editor(this);
bezier_edit->set_timeline(timeline);
bezier_edit->hide();
bezier_edit->set_v_size_flags(SIZE_EXPAND_FILL);
bezier_edit->connect("timeline_changed", callable_mp(this, &AnimationTrackEditor::_timeline_changed));
marker_edit = memnew(AnimationMarkerEdit);
@@ -621,6 +621,7 @@ class AnimationTrackEditor : public VBoxContainer {
HScrollBar *hscroll = nullptr;
ScrollContainer *scroll = nullptr;
VBoxContainer *track_vbox = nullptr;
MarginContainer *bezier_mc = nullptr;
AnimationBezierTrackEdit *bezier_edit = nullptr;
VBoxContainer *timeline_vbox = nullptr;
+3
View File
@@ -2547,6 +2547,9 @@ void ThemeModern::populate_editor_styles(const Ref<EditorTheme> &p_theme, Editor
p_theme->set_constant("margin_left", "AnimationTrackMargins", margin);
p_theme->set_constant("margin_right", "AnimationTrackMargins", margin);
p_theme->set_type_variation("AnimationBezierMargin", "MarginContainer");
p_theme->set_constant("margin_left", "AnimationBezierMargin", margin);
// AnimationTimelineEdit.
// "primary" is used for integer timeline values, "secondary" for decimals.