diff options
author | Samuele Panzeri <samuele.panzeri@gmail.com> | 2023-04-16 11:08:53 +0200 |
---|---|---|
committer | Samuele Panzeri <samuele.panzeri@gmail.com> | 2023-04-22 18:34:36 +0200 |
commit | b6abb347595faa7bad57afff1f10e8c7b8528e5d (patch) | |
tree | 6c204922047b068d24a1bcb35405f40dec02453e | |
parent | afca0b8fdd07ff2e50f421a0e5424897cff1eb77 (diff) | |
download | redot-engine-b6abb347595faa7bad57afff1f10e8c7b8528e5d.tar.gz |
Fix editor spin slider remaining editable if set read_only during an edit and fix related animation player crash
-rw-r--r-- | editor/animation_track_editor.cpp | 4 | ||||
-rw-r--r-- | editor/gui/editor_spin_slider.cpp | 11 |
2 files changed, 14 insertions, 1 deletions
diff --git a/editor/animation_track_editor.cpp b/editor/animation_track_editor.cpp index 1ca161bd43..c6acf99872 100644 --- a/editor/animation_track_editor.cpp +++ b/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; diff --git a/editor/gui/editor_spin_slider.cpp b/editor/gui/editor_spin_slider.cpp index 2e67893fac..ecbf12fed8 100644 --- a/editor/gui/editor_spin_slider.cpp +++ b/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(); } |