summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2018-12-06 15:39:09 +0100
committerGitHub <noreply@github.com>2018-12-06 15:39:09 +0100
commit7198f5da9bacefb3211ebb0f5c1b51905f0fe9ca (patch)
treec1cc5e8f869c2564fb69f3261df76aebd2aad335
parenta0a9553cbedfbdf0fa1a8ecda408093b55a29260 (diff)
parente890a7d6275d1230690c3ec3ca9134eab61f8b5d (diff)
Merge pull request #23608 from RySchmitt/fix_spin_slider
Improve dragging behavior of editor_spin_slider
-rw-r--r--editor/editor_spin_slider.cpp6
-rw-r--r--editor/editor_spin_slider.h1
2 files changed, 5 insertions, 2 deletions
diff --git a/editor/editor_spin_slider.cpp b/editor/editor_spin_slider.cpp
index 8ea56b8578..1b7322fd13 100644
--- a/editor/editor_spin_slider.cpp
+++ b/editor/editor_spin_slider.cpp
@@ -63,6 +63,7 @@ void EditorSpinSlider::_gui_input(const Ref<InputEvent> &p_event) {
grabbing_spinner_attempt = true;
grabbing_spinner_dist_cache = 0;
+ pre_grab_value = get_value();
grabbing_spinner = false;
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) {
set_value(get_value() + SGN(grabbing_spinner_dist_cache));
grabbing_spinner_dist_cache = 0;
+ pre_grab_value = get_value();
}
} else {
- set_value(get_value() + get_step() * grabbing_spinner_dist_cache * 10);
- grabbing_spinner_dist_cache = 0;
+ set_value(pre_grab_value + get_step() * grabbing_spinner_dist_cache * 10);
}
}
} else if (updown_offset != -1) {
@@ -434,6 +435,7 @@ EditorSpinSlider::EditorSpinSlider() {
grabbing_spinner_attempt = false;
grabbing_spinner = false;
grabbing_spinner_dist_cache = 0;
+ pre_grab_value = 0;
set_focus_mode(FOCUS_ALL);
updown_offset = -1;
hover_updown = false;
diff --git a/editor/editor_spin_slider.h b/editor/editor_spin_slider.h
index e48eb171b8..9d43bd2884 100644
--- a/editor/editor_spin_slider.h
+++ b/editor/editor_spin_slider.h
@@ -59,6 +59,7 @@ class EditorSpinSlider : public Range {
bool read_only;
float grabbing_spinner_dist_cache;
Vector2 grabbing_spinner_mouse_pos;
+ double pre_grab_value;
LineEdit *value_input;
bool value_input_just_closed;