@@ -2932,21 +2932,28 @@ String AnimationTrackEdit::get_tooltip(const Point2 &p_pos) const {
29322932 text += TTR (" In-Handle:" ) + " " + String (ih) + " \n " ;
29332933 Vector2 oh = animation->bezier_track_get_key_out_handle (track, key_idx);
29342934 text += TTR (" Out-Handle:" ) + " " + String (oh) + " \n " ;
2935+
2936+ String handle_mode;
29352937 int hm = animation->bezier_track_get_key_handle_mode (track, key_idx);
29362938 switch (hm) {
29372939 case Animation::HANDLE_MODE_FREE: {
2938- text + = TTR (" Handle mode: Free \n " );
2940+ handle_mode = TTR (" Free " , " Bezier Handle Mode " );
29392941 } break ;
29402942 case Animation::HANDLE_MODE_LINEAR: {
2941- text + = TTR (" Handle mode: Linear \n " );
2943+ handle_mode = TTR (" Linear " , " Bezier Handle Mode " );
29422944 } break ;
29432945 case Animation::HANDLE_MODE_BALANCED: {
2944- text + = TTR (" Handle mode: Balanced \n " );
2946+ handle_mode = TTR (" Balanced " , " Bezier Handle Mode " );
29452947 } break ;
29462948 case Animation::HANDLE_MODE_MIRRORED: {
2947- text += TTR (" Handle mode: Mirrored\n " );
2949+ handle_mode = TTR (" Mirrored" , " Bezier Handle Mode" );
2950+ } break ;
2951+ default : {
2952+ // Unknown modes may occur when editing a file from a newer version of Godot.
2953+ handle_mode = itos (hm);
29482954 } break ;
29492955 }
2956+ text += vformat (TTR (" Handle mode: %s\n " ), handle_mode);
29502957 } break ;
29512958 case Animation::TYPE_AUDIO: {
29522959 String stream_name = " null" ;
@@ -5470,6 +5477,11 @@ void AnimationTrackEditor::_notification(int p_what) {
54705477 track_vbox->add_theme_constant_override (" separation" , track_separation);
54715478
54725479 function_name_toggler->add_theme_color_override (" icon_pressed_color" , get_theme_color (" icon_disabled_color" , EditorStringName (Editor)));
5480+
5481+ bezier_key_mode->set_item_icon (bezier_key_mode->get_item_index (Animation::HANDLE_MODE_FREE), get_editor_theme_icon (SNAME (" BezierHandlesFree" )));
5482+ bezier_key_mode->set_item_icon (bezier_key_mode->get_item_index (Animation::HANDLE_MODE_LINEAR), get_editor_theme_icon (SNAME (" BezierHandlesLinear" )));
5483+ bezier_key_mode->set_item_icon (bezier_key_mode->get_item_index (Animation::HANDLE_MODE_BALANCED), get_editor_theme_icon (SNAME (" BezierHandlesBalanced" )));
5484+ bezier_key_mode->set_item_icon (bezier_key_mode->get_item_index (Animation::HANDLE_MODE_MIRRORED), get_editor_theme_icon (SNAME (" BezierHandlesMirror" )));
54735485 } break ;
54745486
54755487 case NOTIFICATION_READY: {
@@ -5484,6 +5496,14 @@ void AnimationTrackEditor::_notification(int p_what) {
54845496 case NOTIFICATION_VISIBILITY_CHANGED: {
54855497 update_keying ();
54865498 } break ;
5499+
5500+ case NOTIFICATION_TRANSLATION_CHANGED: {
5501+ bezier_key_mode->set_item_text (bezier_key_mode->get_item_index (Animation::HANDLE_MODE_FREE), TTR (" Free" , " Bezier Handle Mode" ));
5502+ bezier_key_mode->set_item_text (bezier_key_mode->get_item_index (Animation::HANDLE_MODE_LINEAR), TTR (" Linear" , " Bezier Handle Mode" ));
5503+ bezier_key_mode->set_item_text (bezier_key_mode->get_item_index (Animation::HANDLE_MODE_BALANCED), TTR (" Balanced" , " Bezier Handle Mode" ));
5504+ bezier_key_mode->set_item_text (bezier_key_mode->get_item_index (Animation::HANDLE_MODE_MIRRORED), TTR (" Mirrored" , " Bezier Handle Mode" ));
5505+ bezier_key_mode->set_tooltip_text (TTR (" Bezier Default Mode" ) + " \n " + TTR (" Set the default handle mode of new bezier keys." ));
5506+ } break ;
54875507 }
54885508}
54895509
@@ -8037,17 +8057,14 @@ AnimationTrackEditor::AnimationTrackEditor() {
80378057 spacer->set_h_size_flags (SIZE_EXPAND_FILL);
80388058 bottom_hf->add_child (spacer);
80398059
8040- Label *bezier_key_default_label = memnew (Label);
8041- bezier_key_default_label->set_text (TTR (" Bezier Default Mode:" ));
8042- bottom_hf->add_child (bezier_key_default_label);
8043-
80448060 bezier_key_mode = memnew (OptionButton);
8045- bezier_key_mode->add_item (TTR (" Free" ));
8046- bezier_key_mode->add_item (TTR (" Linear" ));
8047- bezier_key_mode->add_item (TTR (" Balanced" ));
8048- bezier_key_mode->add_item (TTR (" Mirrored" ));
8049- bezier_key_mode->set_tooltip_text (TTR (" Set the default behavior of new bezier keys." ));
8050- bezier_key_mode->select (2 );
8061+ bezier_key_mode->set_auto_translate_mode (AUTO_TRANSLATE_MODE_DISABLED);
8062+ bezier_key_mode->add_item (String (), Animation::HANDLE_MODE_FREE);
8063+ bezier_key_mode->add_item (String (), Animation::HANDLE_MODE_LINEAR);
8064+ bezier_key_mode->add_item (String (), Animation::HANDLE_MODE_BALANCED);
8065+ bezier_key_mode->add_item (String (), Animation::HANDLE_MODE_MIRRORED);
8066+ bezier_key_mode->select (Animation::HANDLE_MODE_BALANCED);
8067+ bezier_key_mode->set_accessibility_name (TTRC (" Bezier Default Mode" ));
80518068
80528069 bottom_hf->add_child (bezier_key_mode);
80538070 bottom_hf->add_child (memnew (VSeparator));
0 commit comments