Merge pull request #23608 from RySchmitt/fix_spin_slider

Improve dragging behavior of editor_spin_slider
This commit is contained in:
Rémi Verschelde 2018-12-06 15:39:09 +01:00 committed by GitHub
commit 7198f5da9b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 2 deletions

View File

@ -63,6 +63,7 @@ void EditorSpinSlider::_gui_input(const Ref<InputEvent> &p_event) {
grabbing_spinner_attempt = true; grabbing_spinner_attempt = true;
grabbing_spinner_dist_cache = 0; grabbing_spinner_dist_cache = 0;
pre_grab_value = get_value();
grabbing_spinner = false; grabbing_spinner = false;
grabbing_spinner_mouse_pos = Input::get_singleton()->get_mouse_position(); grabbing_spinner_mouse_pos = Input::get_singleton()->get_mouse_position();
} }
@ -107,10 +108,10 @@ void EditorSpinSlider::_gui_input(const Ref<InputEvent> &p_event) {
if (ABS(grabbing_spinner_dist_cache) > 6) { if (ABS(grabbing_spinner_dist_cache) > 6) {
set_value(get_value() + SGN(grabbing_spinner_dist_cache)); set_value(get_value() + SGN(grabbing_spinner_dist_cache));
grabbing_spinner_dist_cache = 0; grabbing_spinner_dist_cache = 0;
pre_grab_value = get_value();
} }
} else { } else {
set_value(get_value() + get_step() * grabbing_spinner_dist_cache * 10); set_value(pre_grab_value + get_step() * grabbing_spinner_dist_cache * 10);
grabbing_spinner_dist_cache = 0;
} }
} }
} else if (updown_offset != -1) { } else if (updown_offset != -1) {
@ -434,6 +435,7 @@ EditorSpinSlider::EditorSpinSlider() {
grabbing_spinner_attempt = false; grabbing_spinner_attempt = false;
grabbing_spinner = false; grabbing_spinner = false;
grabbing_spinner_dist_cache = 0; grabbing_spinner_dist_cache = 0;
pre_grab_value = 0;
set_focus_mode(FOCUS_ALL); set_focus_mode(FOCUS_ALL);
updown_offset = -1; updown_offset = -1;
hover_updown = false; hover_updown = false;

View File

@ -59,6 +59,7 @@ class EditorSpinSlider : public Range {
bool read_only; bool read_only;
float grabbing_spinner_dist_cache; float grabbing_spinner_dist_cache;
Vector2 grabbing_spinner_mouse_pos; Vector2 grabbing_spinner_mouse_pos;
double pre_grab_value;
LineEdit *value_input; LineEdit *value_input;
bool value_input_just_closed; bool value_input_just_closed;