@@ -2931,21 +2931,28 @@ String AnimationTrackEdit::get_tooltip(const Point2 &p_pos) const {
29312931 text += TTR (" In-Handle:" ) + " " + String (ih) + " \n " ;
29322932 Vector2 oh = animation->bezier_track_get_key_out_handle (track, key_idx);
29332933 text += TTR (" Out-Handle:" ) + " " + String (oh) + " \n " ;
2934+
2935+ String handle_mode;
29342936 int hm = animation->bezier_track_get_key_handle_mode (track, key_idx);
29352937 switch (hm) {
29362938 case Animation::HANDLE_MODE_FREE: {
2937- text + = TTR (" Handle mode: Free \n " );
2939+ handle_mode = TTR (" Free " , " Bezier Handle Mode " );
29382940 } break ;
29392941 case Animation::HANDLE_MODE_LINEAR: {
2940- text + = TTR (" Handle mode: Linear \n " );
2942+ handle_mode = TTR (" Linear " , " Bezier Handle Mode " );
29412943 } break ;
29422944 case Animation::HANDLE_MODE_BALANCED: {
2943- text + = TTR (" Handle mode: Balanced \n " );
2945+ handle_mode = TTR (" Balanced " , " Bezier Handle Mode " );
29442946 } break ;
29452947 case Animation::HANDLE_MODE_MIRRORED: {
2946- text += TTR (" Handle mode: Mirrored\n " );
2948+ handle_mode = TTR (" Mirrored" , " Bezier Handle Mode" );
2949+ } break ;
2950+ default : {
2951+ // Unknown modes may occur when editing a file from a newer version of Godot.
2952+ handle_mode = itos (hm);
29472953 } break ;
29482954 }
2955+ text += vformat (TTR (" Handle mode: %s\n " ), handle_mode);
29492956 } break ;
29502957 case Animation::TYPE_AUDIO: {
29512958 String stream_name = " null" ;
@@ -5377,6 +5384,11 @@ void AnimationTrackEditor::_notification(int p_what) {
53775384 track_vbox->add_theme_constant_override (" separation" , track_separation);
53785385
53795386 function_name_toggler->add_theme_color_override (" icon_pressed_color" , get_theme_color (" icon_disabled_color" , EditorStringName (Editor)));
5387+
5388+ bezier_key_mode->set_item_icon (bezier_key_mode->get_item_index (Animation::HANDLE_MODE_FREE), get_editor_theme_icon (SNAME (" BezierHandlesFree" )));
5389+ bezier_key_mode->set_item_icon (bezier_key_mode->get_item_index (Animation::HANDLE_MODE_LINEAR), get_editor_theme_icon (SNAME (" BezierHandlesLinear" )));
5390+ bezier_key_mode->set_item_icon (bezier_key_mode->get_item_index (Animation::HANDLE_MODE_BALANCED), get_editor_theme_icon (SNAME (" BezierHandlesBalanced" )));
5391+ bezier_key_mode->set_item_icon (bezier_key_mode->get_item_index (Animation::HANDLE_MODE_MIRRORED), get_editor_theme_icon (SNAME (" BezierHandlesMirror" )));
53805392 } break ;
53815393
53825394 case NOTIFICATION_READY: {
@@ -5391,6 +5403,14 @@ void AnimationTrackEditor::_notification(int p_what) {
53915403 case NOTIFICATION_VISIBILITY_CHANGED: {
53925404 update_keying ();
53935405 } break ;
5406+
5407+ case NOTIFICATION_TRANSLATION_CHANGED: {
5408+ bezier_key_mode->set_item_text (bezier_key_mode->get_item_index (Animation::HANDLE_MODE_FREE), TTR (" Free" , " Bezier Handle Mode" ));
5409+ bezier_key_mode->set_item_text (bezier_key_mode->get_item_index (Animation::HANDLE_MODE_LINEAR), TTR (" Linear" , " Bezier Handle Mode" ));
5410+ bezier_key_mode->set_item_text (bezier_key_mode->get_item_index (Animation::HANDLE_MODE_BALANCED), TTR (" Balanced" , " Bezier Handle Mode" ));
5411+ bezier_key_mode->set_item_text (bezier_key_mode->get_item_index (Animation::HANDLE_MODE_MIRRORED), TTR (" Mirrored" , " Bezier Handle Mode" ));
5412+ bezier_key_mode->set_tooltip_text (TTR (" Bezier Default Mode" ) + " \n " + TTR (" Set the default handle mode of new bezier keys." ));
5413+ } break ;
53945414 }
53955415}
53965416
@@ -7927,17 +7947,14 @@ AnimationTrackEditor::AnimationTrackEditor() {
79277947 spacer->set_h_size_flags (SIZE_EXPAND_FILL);
79287948 bottom_hf->add_child (spacer);
79297949
7930- Label *bezier_key_default_label = memnew (Label);
7931- bezier_key_default_label->set_text (TTR (" Bezier Default Mode:" ));
7932- bottom_hf->add_child (bezier_key_default_label);
7933-
79347950 bezier_key_mode = memnew (OptionButton);
7935- bezier_key_mode->add_item (TTR (" Free" ));
7936- bezier_key_mode->add_item (TTR (" Linear" ));
7937- bezier_key_mode->add_item (TTR (" Balanced" ));
7938- bezier_key_mode->add_item (TTR (" Mirrored" ));
7939- bezier_key_mode->set_tooltip_text (TTR (" Set the default behavior of new bezier keys." ));
7940- bezier_key_mode->select (2 );
7951+ bezier_key_mode->set_auto_translate_mode (AUTO_TRANSLATE_MODE_DISABLED);
7952+ bezier_key_mode->add_item (String (), Animation::HANDLE_MODE_FREE);
7953+ bezier_key_mode->add_item (String (), Animation::HANDLE_MODE_LINEAR);
7954+ bezier_key_mode->add_item (String (), Animation::HANDLE_MODE_BALANCED);
7955+ bezier_key_mode->add_item (String (), Animation::HANDLE_MODE_MIRRORED);
7956+ bezier_key_mode->select (Animation::HANDLE_MODE_BALANCED);
7957+ bezier_key_mode->set_accessibility_name (TTRC (" Bezier Default Mode" ));
79417958
79427959 bottom_hf->add_child (bezier_key_mode);
79437960 bottom_hf->add_child (memnew (VSeparator));
0 commit comments