Explorar el Código

Merge pull request #76122 from spanzeri/fix_animation_snap_slider_crash

Fix editor spin slider remaining editable if set read_only during and edit and fix related animation player crash
Rémi Verschelde hace 2 años
padre
commit
91bcfa8896
Se han modificado 2 ficheros con 14 adiciones y 1 borrados
  1. 4 0
      editor/animation_track_editor.cpp
  2. 10 1
      editor/gui/editor_spin_slider.cpp

+ 4 - 0
editor/animation_track_editor.cpp

@@ -4639,6 +4639,10 @@ void AnimationTrackEditor::_update_scroll(double) {
 }
 
 void AnimationTrackEditor::_update_step(double p_new_step) {
+	if (animation.is_null()) {
+		return;
+	}
+
 	EditorUndoRedoManager *undo_redo = EditorUndoRedoManager::get_singleton();
 	undo_redo->create_action(TTR("Change Animation Step"));
 	float step_value = p_new_step;

+ 10 - 1
editor/gui/editor_spin_slider.cpp

@@ -573,8 +573,13 @@ void EditorSpinSlider::_value_focus_exited() {
 		return;
 	}
 
+	if (is_read_only()) {
+		// Spin slider has become read only while it was being edited.
+		return;
+	}
+
 	_evaluate_input_text();
-	// focus is not on the same element after the vlalue_input was exited
+	// focus is not on the same element after the value_input was exited
 	// -> focus is on next element
 	// -> TAB was pressed
 	// -> modal_close was not called
@@ -604,6 +609,10 @@ void EditorSpinSlider::_grabber_mouse_exited() {
 
 void EditorSpinSlider::set_read_only(bool p_enable) {
 	read_only = p_enable;
+	if (read_only && value_input) {
+		value_input->release_focus();
+	}
+
 	queue_redraw();
 }