Jelajahi Sumber

Merge pull request #23608 from RySchmitt/fix_spin_slider

Improve dragging behavior of editor_spin_slider
Rémi Verschelde 6 tahun lalu
induk
melakukan
7198f5da9b
2 mengubah file dengan 5 tambahan dan 2 penghapusan
  1. 4 2
      editor/editor_spin_slider.cpp
  2. 1 0
      editor/editor_spin_slider.h

+ 4 - 2
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;

+ 1 - 0
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;