From 053d718154af76422c51dfbe2d3054d7d7aaf816 Mon Sep 17 00:00:00 2001 From: Alexander Hartmann Date: Sun, 3 Sep 2023 19:23:14 +0200 Subject: [PATCH] Fixes the 'CLAMP' problem in the 'EditorSpinSlider' ... ... when arrow keys are pressed up or down. --- editor/gui/editor_spin_slider.cpp | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/editor/gui/editor_spin_slider.cpp b/editor/gui/editor_spin_slider.cpp index fa94a107f08..bb6fe50526e 100644 --- a/editor/gui/editor_spin_slider.cpp +++ b/editor/gui/editor_spin_slider.cpp @@ -203,7 +203,6 @@ void EditorSpinSlider::_value_input_gui_input(const Ref &p_event) { Ref k = p_event; if (k.is_valid() && k->is_pressed() && !is_read_only()) { double step = get_step(); - double real_step = step; if (step < 1) { double divisor = 1.0 / get_step(); @@ -221,30 +220,22 @@ void EditorSpinSlider::_value_input_gui_input(const Ref &p_event) { } Key code = k->get_keycode(); + switch (code) { - case Key::UP: { - _evaluate_input_text(); - - double last_value = get_value(); - set_value(last_value + step); - double new_value = get_value(); - - if (new_value < CLAMP(last_value + step, get_min(), get_max())) { - set_value(last_value + real_step); - } - - value_input_dirty = true; - set_process_internal(true); - } break; + case Key::UP: case Key::DOWN: { _evaluate_input_text(); double last_value = get_value(); - set_value(last_value - step); + if (code == Key::DOWN) { + step *= -1; + } + set_value(last_value + step); double new_value = get_value(); - if (new_value > CLAMP(last_value - step, get_min(), get_max())) { - set_value(last_value - real_step); + double clamp_value = CLAMP(new_value, get_min(), get_max()); + if (new_value != clamp_value) { + set_value(clamp_value); } value_input_dirty = true;