summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuele Panzeri <samuele.panzeri@gmail.com>2023-04-16 11:08:53 +0200
committerSamuele Panzeri <samuele.panzeri@gmail.com>2023-04-22 18:34:36 +0200
commitb6abb347595faa7bad57afff1f10e8c7b8528e5d (patch)
tree6c204922047b068d24a1bcb35405f40dec02453e
parentafca0b8fdd07ff2e50f421a0e5424897cff1eb77 (diff)
downloadredot-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.cpp4
-rw-r--r--editor/gui/editor_spin_slider.cpp11
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();
}